<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <div class="rfcmarkup">
        <pre>网络工作组J。邮政网络工作组J。邮政征求意见：959 J.雷诺兹ISI过时RFC：765（IEN 149）1985年10月征求意见：959 J.雷诺兹ISI过时RFC：<a href="/doc/html/rfc765">765</a>（IEN 149）1985年10月<span class="h1">文件传输协议（FTP）</span>本备忘录的状态本备忘录的状态这份备忘录是文件传输的官方规范协议（FTP）。此备忘录的分发是无限的。本版中包含以下新的可选命令规格：CDUP（更改为父目录），SMNT（结构安装），STOU（商店唯一），RMD（删除目录），MKD（制作目录），PWD（打印目录）和SYST（系统）。请注意，本规范与上一版兼容。这份备忘录是文件传输的官方规范协议（FTP）。此备忘录的分发是无限的。本版中包含以下新的可选命令规格：CDUP（更改为父目录），SMNT（结构安装），STOU（商店唯一），RMD（删除目录），MKD（制作目录），PWD（打印目录）和SYST（系统）。请注意，本规范与上一版兼容。<span class="h2" id="autoid-1"><a class="selflink" id="section-1" href="#section-1">1</a>。介绍</span>FTP的目标是1）促进文件共享（计算机FTP的目标是1）促进文件共享（计算机程序和/或数据），2）鼓励间接或隐性（通过程序）使用远程计算机，3）保护用户免受主机之间文件存储系统的变化，以及4）传输数据可靠且高效。FTP，尽管用户可以直接使用在终端上，主要为程序使用而设计。本规范的尝试是满足多样化的需求大型主机、迷你主机、个人工作站和TAC的用户，具有简单且易于实现的协议设计。本文假设了传输控制协议的知识（TCP）[2]和Telnet协议[3]。这些文件包含在ARPA-互联网协议手册中[1]。程序和/或数据），2）鼓励间接或隐性（通过程序）使用远程计算机，3）保护用户免受主机之间文件存储系统的变化，以及4）传输数据可靠且高效。FTP，尽管用户可以直接使用在终端上，主要为程序使用而设计。本规范的尝试是满足多样化的需求大型主机、迷你主机、个人工作站和TAC的用户，具有简单且易于实现的协议设计。本文假设了传输控制协议的知识（TCP）[2]和Telnet协议[3]。这些文件包含在ARPA-互联网协议手册中[1]。<span class="h2" id="autoid-2"><a class="selflink" id="section-2" href="#section-2">2</a>。一览表</span>在本节中，历史、术语和FTP模型是在本节中，历史、术语和FTP模型是讨论。本节中定义的术语只是那些在FTP中具有特殊意义。一些术语非常特定于FTP模型；一些读者可能希望转向在查看术语时，关于FTP模型的部分。讨论。本节中定义的术语只是那些在FTP中具有特殊意义。一些术语非常特定于FTP模型；一些读者可能希望转向在查看术语时，关于FTP模型的部分。<span class="grey">Postel &amp; Reynolds [第1页]</span></pre>
        <hr class="noprint"><!--NewPage-->
        <pre
            class="newpage"><span id="page-2"></span>
    <span class="grey"><a href="/doc/html/rfc959">RFC 959 </a>1985年10月</span>文件传输协议文件传输协议2.1.历史多年来，FTP经历了长期的演变。附录三是一个征求意见文件按时间顺序汇编与FTP有关。这些包括第一个拟议的文件传输1971年为在主机上实施而开发的机制在M.I.T.（RFC 114），以及RFC 141中的评论和讨论。2.1.历史多年来，FTP经历了长期的演变。<a href="#appendix-I">附录三</a>是一个征求意见文件按时间顺序汇编与FTP有关。这些包括第一个拟议的文件传输1971年为在主机上实施而开发的机制在M.I.T.（<a href="/doc/html/rfc114">RFC 114</a>），以及<a href="/doc/html/rfc141">RFC 141</a>中的评论和讨论。<a href="/doc/html/rfc172">RFC 172</a>为文件传输提供了面向用户级的协议在主机（包括终端IMP）之间。修订版这是<a href="/doc/html/rfc265">RFC 265</a>，重述了FTP以供进一步审查，而<a href="/doc/html/rfc281">RFC 281</a>建议进一步更改。“设置数据类型”的使用建议进一步更改。“设置数据类型”的使用1982年1月，RFC 294提出了交易。1982年1月，<a href="/doc/html/rfc294">RFC 294</a>提出了交易。<a href="/doc/html/rfc354">RFC 354</a>RFC 354过时的RFC264和265。文件传输协议现在被定义为主机之间文件传输的协议ARPANET，FTP的主要功能定义为在主机之间高效可靠地传输文件和允许方便地使用远程文件存储功能。过时的RFC264和265。文件传输协议现在被定义为主机之间文件传输的协议ARPANET，FTP的主要功能定义为在主机之间高效可靠地传输文件和允许方便地使用远程文件存储功能。<a href="/doc/html/rfc385">RFC 385</a>进一步评论了错误、重点和协议的补充，而<a href="/doc/html/rfc414">RFC 414</a>提供了状态报告在工作服务器和用户FTP上。<a href="/doc/html/rfc430">RFC 430</a>，1973年发布，（在其他数量太多而不胜一提的RFC中）进一步介绍了关于FTP的评论。最后，一份“官方”FTP文档是作为<a href="/doc/html/rfc454">RFC 454</a>发布。到1973年7月，与FTP的最新版本相比有相当大的变化制作了，但总体结构保持不变。<a href="/doc/html/rfc542">RFC 542</a>作为新的“官方”规范发布，以反映这些变化。然而，许多基于旧的实现规格未更新。1974年，RFCs 607和614继续对FTP进行评论。<a href="/doc/html/rfc624">RFC 624</a>提议进一步的设计更改和小幅修改。1975年，提议进一步的设计更改和小幅修改。1975年，题为“独自离开足够好”的题为“独自离开足够好”的RFC 686讨论了所有早期和后续版本的FTP之间的差异。<a href="/doc/html/rfc686">RFC 686</a>讨论了所有早期和后续版本的FTP之间的差异。<a href="/doc/html/rfc691">RFC 691</a>RFC 691对RFC 686进行了小幅修订，关于打印文件的主题。由从NCP过渡到TCP作为基础协议，凤凰诞生于上述一切RFC 765中的努力作为用于TCP的FTP规范。当前版本的FTP规范旨在纠正一些小的文档错误，以改善解释一些协议功能，并添加一些新的可选命令。对<a href="/doc/html/rfc686">RFC 686</a>进行了小幅修订，关于打印文件的主题。由从NCP过渡到TCP作为基础协议，凤凰诞生于上述一切<a href="/doc/html/rfc765">RFC 765</a>中的努力作为用于TCP的FTP规范。当前版本的FTP规范旨在纠正一些小的文档错误，以改善解释一些协议功能，并添加一些新的可选命令。<span class="grey">Postel &amp; Reynolds [第2页]</span></pre>
        <hr class="noprint"><!--NewPage-->
        <pre
            class="newpage"><span id="page-3"></span>
    <span class="grey"><a href="/doc/html/rfc959">RFC 959 </a>1985年10月</span>文件传输协议文件传输协议特别是，以下新的可选命令包含在本版规范：CDUP - 更改为父目录SMNT - 结构安装STOU - 商店独特RMD - 删除目录MKD - 制作目录PWD - 打印目录SYST - 系统本规范与上一版兼容。罗马字母的第一个字母符合先前规范的程序应自动符合本规范。2.2.术语ASCIIASCII字符集在ARPA-Internet中定义协议手册。在FTP中，ASCII字符被定义为八位代码集的下半部分（即最有值位为零）。访问控制访问控制定义了用户使用系统，以及该系统中的文件。访问控制是防止未经授权或意外使用文件所必需的。调用访问权限是服务器-FTP进程的特权控制。字节大小FTP中有两个感兴趣的字节大小：逻辑字节文件的大小，以及用于的传输字节大小数据传输。传输字节大小总是8一点点。传输字节大小不一定是字节大小数据存储在系统中，也不存储逻辑字节解释数据结构的大小。特别是，以下新的可选命令包含在本版规范：CDUP - 更改为父目录SMNT - 结构安装STOU - 商店独特RMD - 删除目录MKD - 制作目录PWD - 打印目录SYST - 系统本规范与上一版兼容。罗马字母的第一个字母符合先前规范的程序应自动符合本规范。2.2.术语ASCIIASCII字符集在ARPA-Internet中定义协议手册。在FTP中，ASCII字符被定义为八位代码集的下半部分（即最有值位为零）。访问控制访问控制定义了用户使用系统，以及该系统中的文件。访问控制是防止未经授权或意外使用文件所必需的。调用访问权限是服务器-FTP进程的特权控制。字节大小FTP中有两个感兴趣的字节大小：逻辑字节文件的大小，以及用于的传输字节大小数据传输。传输字节大小总是8一点点。传输字节大小不一定是字节大小数据存储在系统中，也不存储逻辑字节解释数据结构的大小。<span class="grey">Postel &amp; Reynolds [第3页]</span></pre>
        <hr class="noprint"><!--NewPage-->
        <pre
            class="newpage"><span id="page-4"></span>
    <span class="grey"><a href="/doc/html/rfc959">RFC 959 </a>1985年10月</span>文件传输协议文件传输协议控制连接USER-PI和SERVER-PI之间的通信路径交换命令和回复。这种联系如下Telnet协议。数据连接传输数据的全双工连接，在指定的模式和类型。传输的数据可能是一个文件、一个完整文件或多个文件。这条路可能是在服务器-DTP和用户-DTP之间，或两个之间服务器-DTPs。数据端口被动数据传输过程在数据端口上“听”对于活动传输过程的连接，以便打开数据连接。DTP数据传输过程建立和管理数据连接。DTP可以是被动的，也可以是主动的。线路末端行尾序列定义了打印的分离线条。顺序是马车返回，然后是线路馈线。EOF定义文件结尾的文件结束条件是转移。EOR定义记录结束的记录结束条件正在转移。错误恢复允许用户从某些错误中恢复的过程例如主机系统或传输过程的故障。铟FTP，错误恢复可能涉及重新启动文件传输给定检查点。控制连接USER-PI和SERVER-PI之间的通信路径交换命令和回复。这种联系如下Telnet协议。数据连接传输数据的全双工连接，在指定的模式和类型。传输的数据可能是一个文件、一个完整文件或多个文件。这条路可能是在服务器-DTP和用户-DTP之间，或两个之间服务器-DTPs。数据端口被动数据传输过程在数据端口上“听”对于活动传输过程的连接，以便打开数据连接。DTP数据传输过程建立和管理数据连接。DTP可以是被动的，也可以是主动的。线路末端行尾序列定义了打印的分离线条。顺序是马车返回，然后是线路馈线。EOF定义文件结尾的文件结束条件是转移。EOR定义记录结束的记录结束条件正在转移。错误恢复允许用户从某些错误中恢复的过程例如主机系统或传输过程的故障。铟FTP，错误恢复可能涉及重新启动文件传输给定检查点。<span class="grey">Postel &amp; Reynolds [第4页]</span></pre>
        <hr class="noprint"><!--NewPage-->
        <pre
            class="newpage"><span id="page-5"></span>
    <span class="grey"><a href="/doc/html/rfc959">RFC 959 </a>1985年10月</span>文件传输协议文件传输协议FTP命令一组包含控制信息流动的命令从用户-FTP到服务器-FTP进程。文件一组有序的计算机数据（包括程序），任意长度，由路径名唯一标识。形式通过数据传输数据的模式连接。该模式定义了传输期间的数据格式包括EOR和EOF。FTP中定义的传输模式是在传输模式部分中描述。NVTTelnet协议中定义的网络虚拟终端。NVFS网络虚拟文件系统。一个定义的概念带有标准命令的标准网络文件系统和路径名约定。页面一个文件可以结构为一组独立的部分，称为页面。FTP支持不连续文件的传输，因为独立索引页面。路径名路径名被定义为必须是的字符串用户输入到文件系统，以识别文件。路径名通常包含设备和/或目录名称，以及文件名规范。FTP尚未指定标准路径名约定。每个用户必须遵循文件命名传输中涉及的文件系统的约定。pi协议解释器。用户和服务器端协议在用户PI中实现了不同的角色和服务器-PI。FTP命令一组包含控制信息流动的命令从用户-FTP到服务器-FTP进程。文件一组有序的计算机数据（包括程序），任意长度，由路径名唯一标识。形式通过数据传输数据的模式连接。该模式定义了传输期间的数据格式包括EOR和EOF。FTP中定义的传输模式是在传输模式部分中描述。NVTTelnet协议中定义的网络虚拟终端。NVFS网络虚拟文件系统。一个定义的概念带有标准命令的标准网络文件系统和路径名约定。页面一个文件可以结构为一组独立的部分，称为页面。FTP支持不连续文件的传输，因为独立索引页面。路径名路径名被定义为必须是的字符串用户输入到文件系统，以识别文件。路径名通常包含设备和/或目录名称，以及文件名规范。FTP尚未指定标准路径名约定。每个用户必须遵循文件命名传输中涉及的文件系统的约定。pi协议解释器。用户和服务器端协议在用户PI中实现了不同的角色和服务器-PI。<span class="grey">Postel &amp; Reynolds [第5页]</span></pre>
        <hr class="noprint"><!--NewPage-->
        <pre
            class="newpage"><span id="page-6"></span>
    <span class="grey"><a href="/doc/html/rfc959">RFC 959 </a>1985年10月</span>文件传输协议文件传输协议最高纪录顺序文件可以结构为多个连续的文件零件称为记录。FTP支持记录结构但文件不需要有记录结构。回复回复是来自的确认（正面或负面）服务器通过控制连接响应FTP向用户命令。回复的一般形式是完成代码（包括错误代码）后跟一个文本字符串。代码供程序使用，文本通常用于人类用户。服务器-DTP数据传输过程，在其正常的“活动”状态下，与“收听”数据端口建立数据连接。它设置了传输和存储的参数，以及传输来自其PI的命令数据。DTP可以放置在一个倾听的“被动”状态，而不是启动数据端口上的连接。服务器-FTP进程一个进程或一组执行功能的进程与用户-FTP进程合作进行文件传输，并且，可能是另一台服务器。功能由协议组成解释器（PI）和数据传输过程（DTP）。服务器-PI服务器协议解释器在端口L上“听”一个从用户PI连接并建立控制通信连接。它接收标准的FTP命令从用户-PI，发送回复，并管理服务器-DTP。类型用于数据传输的数据表示类型和存储。类型意味着时间之间的某些转换数据存储和数据传输。表示类型FTP中的定义在建立部分中进行了描述数据连接。最高纪录顺序文件可以结构为多个连续的文件零件称为记录。FTP支持记录结构但文件不需要有记录结构。回复回复是来自的确认（正面或负面）服务器通过控制连接响应FTP向用户命令。回复的一般形式是完成代码（包括错误代码）后跟一个文本字符串。代码供程序使用，文本通常用于人类用户。服务器-DTP数据传输过程，在其正常的“活动”状态下，与“收听”数据端口建立数据连接。它设置了传输和存储的参数，以及传输来自其PI的命令数据。DTP可以放置在一个倾听的“被动”状态，而不是启动数据端口上的连接。服务器-FTP进程一个进程或一组执行功能的进程与用户-FTP进程合作进行文件传输，并且，可能是另一台服务器。功能由协议组成解释器（PI）和数据传输过程（DTP）。服务器-PI服务器协议解释器在端口L上“听”一个从用户PI连接并建立控制通信连接。它接收标准的FTP命令从用户-PI，发送回复，并管理服务器-DTP。类型用于数据传输的数据表示类型和存储。类型意味着时间之间的某些转换数据存储和数据传输。表示类型FTP中的定义在建立部分中进行了描述数据连接。<span class="grey">Postel &amp; Reynolds [第6页]</span></pre>
        <hr class="noprint"><!--NewPage-->
        <pre
            class="newpage"><span id="page-7"></span>
    <span class="grey"><a href="/doc/html/rfc959">RFC 959 </a>1985年10月</span>文件传输协议文件传输协议用户一个人或代表希望获得的人的过程文件传输服务。人类用户可以直接互动使用服务器-FTP进程，但使用用户-FTP进程是首选，因为协议设计是加权的自动机。用户-DTP数据传输过程在数据端口上“听取”来自服务器-FTP进程的连接。如果两台服务器是在它们之间传输数据，用户-DTP处于非活动状态。用户-FTP进程一组功能，包括协议解释器、数据传输过程和用户界面一起执行与一个或多个文件合作传输的功能服务器-FTP进程。用户界面允许本地在命令-应词对话中使用的语言用户。用户-PI用户协议解释器启动控制连接从其端口U到服务器-FTP进程，启动FTP命令，并管理用户DTP，如果该过程是文件传输。用户一个人或代表希望获得的人的过程文件传输服务。人类用户可以直接互动使用服务器-FTP进程，但使用用户-FTP进程是首选，因为协议设计是加权的自动机。用户-DTP数据传输过程在数据端口上“听取”来自服务器-FTP进程的连接。如果两台服务器是在它们之间传输数据，用户-DTP处于非活动状态。用户-FTP进程一组功能，包括协议解释器、数据传输过程和用户界面一起执行与一个或多个文件合作传输的功能服务器-FTP进程。用户界面允许本地在命令-应词对话中使用的语言用户。用户-PI用户协议解释器启动控制连接从其端口U到服务器-FTP进程，启动FTP命令，并管理用户DTP，如果该过程是文件传输。<span class="grey">Postel &amp; Reynolds [第7页]</span></pre>
        <hr class="noprint"><!--NewPage-->
        <pre
            class="newpage"><span id="page-8"></span>
    <span class="grey"><a href="/doc/html/rfc959">RFC 959 </a>1985年10月</span>文件传输协议文件传输协议2.3.FTP模型考虑到上述定义，以下模型（显示在图1）可以为FTP服务绘制图表。------------|/--------\||| 用户 || --------||接口|&lt;---&gt;| 用户 ||\----^----/| ----------------- | | ||/------\| FTP命令 |/----V----\|||服务器|&lt;----------------&gt;|用户|||| PI || FTP 回复 || PI |||\--^---/| |\----^----/|| | | | | |-------- |/--V---\| 数据 |/----V----\| --------|文件|&lt;---&gt;|服务器|&lt;----------------&gt;|用户|&lt;---&gt;|文件||系统| || DTP || 连接 || DTP || |系统|-------- |\------/| |\--------/| ---------------------------------服务器-FTP用户-FTP注：1.数据连接可以朝任何方向使用。2.数据连接不需要一直存在。图1 FTP使用模型在图1中描述的模型中，用户协议解释器启动控制连接。控制连接如下Telnet协议。在用户启动时，标准FTP命令由用户PI生成并传输到通过控制连接进行服务器处理。（用户可以建立与服务器-FTP的直接控制连接，从例如，TAC终端，并生成标准FTP命令独立，绕过用户-FTP进程。）标准回复通过控件从服务器-PI发送到用户-PI响应命令的连接。FTP命令指定数据连接的参数（数据端口、传输模式、表示类型和结构）和文件系统操作的性质（存储、检索、附加、删除等）。用户DTP或其指定者应该“听”指定的数据端口，服务器启动数据根据规定进行连接和数据传输参数。应该注意的是，数据端口不需要在2.3.FTP模型考虑到上述定义，以下模型（显示在图1）可以为FTP服务绘制图表。------------|/--------\||| 用户 || --------||接口|&lt;---&gt;| 用户 ||\----^----/| ----------------- | | ||/------\| FTP命令 |/----V----\|||服务器|&lt;----------------&gt;|用户|||| PI || FTP 回复 || PI |||\--^---/| |\----^----/|| | | | | |-------- |/--V---\| 数据 |/----V----\| --------|文件|&lt;---&gt;|服务器|&lt;----------------&gt;|用户|&lt;---&gt;|文件||系统| || DTP || 连接 || DTP || |系统|-------- |\------/| |\--------/| ---------------------------------服务器-FTP用户-FTP注：1.数据连接可以朝任何方向使用。2.数据连接不需要一直存在。图1 FTP使用模型在图1中描述的模型中，用户协议解释器启动控制连接。控制连接如下Telnet协议。在用户启动时，标准FTP命令由用户PI生成并传输到通过控制连接进行服务器处理。（用户可以建立与服务器-FTP的直接控制连接，从例如，TAC终端，并生成标准FTP命令独立，绕过用户-FTP进程。）标准回复通过控件从服务器-PI发送到用户-PI响应命令的连接。FTP命令指定数据连接的参数（数据端口、传输模式、表示类型和结构）和文件系统操作的性质（存储、检索、附加、删除等）。用户DTP或其指定者应该“听”指定的数据端口，服务器启动数据根据规定进行连接和数据传输参数。应该注意的是，数据端口不需要在<span class="grey">Postel &amp; Reynolds [第8页]</span></pre>
        <hr class="noprint"><!--NewPage-->
        <pre
            class="newpage"><span id="page-9"></span>
    <span class="grey"><a href="/doc/html/rfc959">RFC 959 </a>1985年10月</span>文件传输协议文件传输协议通过控件启动FTP命令的同一主机连接，但用户或用户-FTP进程必须确保在指定的数据端口上“收听”。还应该注意数据连接可用于同时发送和接收。在另一种情况下，用户可能希望在两者之间传输文件两个主机，都不是本地主机。用户设置控制与两台服务器的连接，然后安排一个他们之间的数据连接。以这种方式，控制信息传递给用户-PI，但数据在服务器数据传输过程。以下是这个的模型服务器-服务器交互。控制 ------------ 控制----------&gt;| 用户-FTP |&lt;-----------| | 用户-PI | || | "C" | |V ---------------- V---------------- ------------| 服务器-FTP | 数据连接 | 服务器-FTP || "A" |&lt;----------------------&gt;| "B" |------------ 端口（A）端口（B） -------------图2该协议要求控制连接是开放的，而数据传输正在进行中。这是责任用户请求关闭控制连接，当完成了FTP服务，而服务器需要行动。如果控制，服务器可能会中止数据传输连接在没有命令的情况下关闭。FTP和Telnet之间的关系：FTP在控制连接上使用Telnet协议。这可以通过两种方式实现：首先，用户-PI或server-PI可以实施Telnet协议的规则直接在他们自己的程序中；或者，其次，用户-PI或服务器-PI可以使用现有的Telnet模块系统。易于实现、共享代码和模块化编程主张第二种方法。效率和独立性通过控件启动FTP命令的同一主机连接，但用户或用户-FTP进程必须确保在指定的数据端口上“收听”。还应该注意数据连接可用于同时发送和接收。在另一种情况下，用户可能希望在两者之间传输文件两个主机，都不是本地主机。用户设置控制与两台服务器的连接，然后安排一个他们之间的数据连接。以这种方式，控制信息传递给用户-PI，但数据在服务器数据传输过程。以下是这个的模型服务器-服务器交互。控制 ------------ 控制----------&gt;| 用户-FTP |&lt;-----------| | 用户-PI | || | "C" | |V ---------------- V---------------- ------------| 服务器-FTP | 数据连接 | 服务器-FTP || "A" |&lt;----------------------&gt;| "B" |------------ 端口（A）端口（B） -------------图2该协议要求控制连接是开放的，而数据传输正在进行中。这是责任用户请求关闭控制连接，当完成了FTP服务，而服务器需要行动。如果控制，服务器可能会中止数据传输连接在没有命令的情况下关闭。FTP和Telnet之间的关系：FTP在控制连接上使用Telnet协议。这可以通过两种方式实现：首先，用户-PI或server-PI可以实施Telnet协议的规则直接在他们自己的程序中；或者，其次，用户-PI或服务器-PI可以使用现有的Telnet模块系统。易于实现、共享代码和模块化编程主张第二种方法。效率和独立性<span class="grey">Postel &amp; Reynolds [第9页]</span></pre>
        <hr class="noprint"><!--NewPage-->
        <pre
            class="newpage"><span id="page-10"></span>
    <span class="grey"><a href="/doc/html/rfc959">RFC 959 </a>1985年10月</span>文件传输协议文件传输协议主张第一种方法。在实践中，FTP依赖于非常很少使用Telnet协议，所以第一种方法没有必然涉及大量代码。主张第一种方法。在实践中，FTP依赖于非常很少使用Telnet协议，所以第一种方法没有必然涉及大量代码。<span class="h2" id="autoid-3"><a class="selflink" id="section-3" href="#section-3">3</a>。数据传输功能</span>文件仅通过数据连接传输。控制文件仅通过数据连接传输。控制连接用于传输命令，该命令描述了要执行的功能，以及对这些命令的回复（请参阅关于FTP回复的部分）。几个命令与主机之间的数据传输。这些数据传输命令包括MODE命令，该命令指定了数据的位传输，以及STRUcture和TYPE命令，用于定义数据的表示方式。这个传输和表示基本上是独立的，但“流”传输模式取决于文件结构属性，如果使用“压缩”传输模式，性质填充字节取决于表示类型。3.1.数据表示和存储数据从发送主机中的存储设备传输到接收主机中的存储设备。通常有必要对数据进行某些转换，因为数据存储这两个系统中的表述是不同的。例如，NVT-ASCII在不同的数据存储表示系统。DEC TOPS-20s通常将NVT-ASCII存储为五个7位ASCII字符，在36位单词中左对。IBM大型机将NVT-ASCII存储为8位EBCDIC代码。Multics存储NVT-ASCII作为一个36位单词中的四个9位字符。最好是将字符转换为标准的NVT-ASCII表示，当在不同系统之间传输文本。发送和接收站点必须执行必要的标准表示和它们之间的转换内部陈述。传输时会出现不同的表示问题主机系统之间的二进制数据（不是字符代码）不同的单词长度。发件人如何并不总是很清楚应该发送数据，接收者存储它。例如，当将32位字节从32位字长系统传输到36位字长系统，可能是可取的（由于效率和实用性）存储32位字节在后一个系统中，在36位单词中正确证明。在任何情况，用户应该可以选择指定数据表示和转换功能。应该注意连接用于传输命令，该命令描述了要执行的功能，以及对这些命令的回复（请参阅关于FTP回复的部分）。几个命令与主机之间的数据传输。这些数据传输命令包括MODE命令，该命令指定了数据的位传输，以及STRUcture和TYPE命令，用于定义数据的表示方式。这个传输和表示基本上是独立的，但“流”传输模式取决于文件结构属性，如果使用“压缩”传输模式，性质填充字节取决于表示类型。3.1.数据表示和存储数据从发送主机中的存储设备传输到接收主机中的存储设备。通常有必要对数据进行某些转换，因为数据存储这两个系统中的表述是不同的。例如，NVT-ASCII在不同的数据存储表示系统。DEC TOPS-20s通常将NVT-ASCII存储为五个7位ASCII字符，在36位单词中左对。IBM大型机将NVT-ASCII存储为8位EBCDIC代码。Multics存储NVT-ASCII作为一个36位单词中的四个9位字符。最好是将字符转换为标准的NVT-ASCII表示，当在不同系统之间传输文本。发送和接收站点必须执行必要的标准表示和它们之间的转换内部陈述。传输时会出现不同的表示问题主机系统之间的二进制数据（不是字符代码）不同的单词长度。发件人如何并不总是很清楚应该发送数据，接收者存储它。例如，当将32位字节从32位字长系统传输到36位字长系统，可能是可取的（由于效率和实用性）存储32位字节在后一个系统中，在36位单词中正确证明。在任何情况，用户应该可以选择指定数据表示和转换功能。应该注意<span class="grey">Postel &amp; Reynolds [第10页]</span></pre>
        <hr class="noprint"><!--NewPage-->
        <pre
            class="newpage"><span id="page-11"></span>
    <span class="grey"><a href="/doc/html/rfc959">RFC 959 </a>1985年10月</span>文件传输协议文件传输协议FTP提供了非常有限的数据类型表示。超越这种有限能力的转变应该是由用户直接执行。3.1.1.数据类型数据表示在FTP中由用户处理，指定表示类型。这种类型可能是隐式的（如ASCII或EBCDIC）或显式（如在本地字节中）定义字节大小被称为“逻辑字节大小”的解释。请注意，这与用于的字节大小无关通过数据连接传输，称为“传输字节大小”，两者不应该混淆。例如，NVT-ASCII的逻辑字节大小为8位。如果类型是本地字节，那么TYPE命令有一个强制性的秒指定逻辑字节大小的参数。传输字节大小总是8位。3.1.1.1.ASCII类型这是默认类型，必须被所有FTP接受实施。它主要用于转让文本文件，除非两台主机都能找到EBCDIC打字更方便。发件人从内部字符转换数据表示标准的8位NVT-ASCII表示（见Telnet规范）。接收者将把数据从标准表格转换为他自己的内部形式。根据NVT标准，&lt;CRLF&gt;序列应在必要时用于表示行的结尾文本。（见结尾处关于文件结构的讨论数据表示和存储部分。）使用标准的NVT-ASCII表示意味着数据必须解释为8位字节。讨论了ASCII和EBCDIC类型的格式参数在下面。FTP提供了非常有限的数据类型表示。超越这种有限能力的转变应该是由用户直接执行。3.1.1.数据类型数据表示在FTP中由用户处理，指定表示类型。这种类型可能是隐式的（如ASCII或EBCDIC）或显式（如在本地字节中）定义字节大小被称为“逻辑字节大小”的解释。请注意，这与用于的字节大小无关通过数据连接传输，称为“传输字节大小”，两者不应该混淆。例如，NVT-ASCII的逻辑字节大小为8位。如果类型是本地字节，那么TYPE命令有一个强制性的秒指定逻辑字节大小的参数。传输字节大小总是8位。3.1.1.1.ASCII类型这是默认类型，必须被所有FTP接受实施。它主要用于转让文本文件，除非两台主机都能找到EBCDIC打字更方便。发件人从内部字符转换数据表示标准的8位NVT-ASCII表示（见Telnet规范）。接收者将把数据从标准表格转换为他自己的内部形式。根据NVT标准，&lt;CRLF&gt;序列应在必要时用于表示行的结尾文本。（见结尾处关于文件结构的讨论数据表示和存储部分。）使用标准的NVT-ASCII表示意味着数据必须解释为8位字节。讨论了ASCII和EBCDIC类型的格式参数在下面。<span class="grey">Postel &amp; Reynolds [第11页]</span></pre>
        <hr class="noprint"><!--NewPage-->
        <pre
            class="newpage"><span id="page-12"></span>
    <span class="grey"><a href="/doc/html/rfc959">RFC 959 </a>1985年10月</span>文件传输协议文件传输协议3.1.1.2.EBCDIC类型此类型用于主机之间的高效传输哪些使用EBCDIC作为其内部特征代表。对于传输，数据表示为8位EBCDIC角色。字符代码是唯一的区别在EBCDIC和ASCII的功能规范之间类型。行尾（与记录尾相反-见讨论结构）可能很少与EBCDIC类型一起使用为了表示结构，但在哪里必须使用&lt;NL&gt;字符。3.1.1.3.图像类型数据以连续位的比特的身份发送，为了传输，打包到8位传输字节中。接收站点必须将数据存储为连续位。结构存储系统的可能需要填充文件（或每条记录的文件，对于记录结构化文件）到一些方便的边界（字节、单词或块）。这个填充，必须是所有零，只能发生在最后文件（或每条记录的末尾），并且必须有一种识别填充位的方法，以便它们可能是如果检索到文件，则剥离。填充物转换应该得到很好的宣传，以使用户能够在存储站点处理文件。图像类型旨在实现高效存储和检索文件和传输二进制数据。它建议所有FTP都接受这种类型实施。3.1.1.4.本地类型数据以大小的逻辑字节传输由强制性第二个参数字节大小指定。字节大小的值必须是十进制整数；有没有默认值。逻辑字节大小不一定与传输字节大小相同。如果有一个字节大小的差异，那么逻辑字节应该是连续打包，无视传输字节边界最后有任何必要的填充物。3.1.1.2.EBCDIC类型此类型用于主机之间的高效传输哪些使用EBCDIC作为其内部特征代表。对于传输，数据表示为8位EBCDIC角色。字符代码是唯一的区别在EBCDIC和ASCII的功能规范之间类型。行尾（与记录尾相反-见讨论结构）可能很少与EBCDIC类型一起使用为了表示结构，但在哪里必须使用&lt;NL&gt;字符。3.1.1.3.图像类型数据以连续位的比特的身份发送，为了传输，打包到8位传输字节中。接收站点必须将数据存储为连续位。结构存储系统的可能需要填充文件（或每条记录的文件，对于记录结构化文件）到一些方便的边界（字节、单词或块）。这个填充，必须是所有零，只能发生在最后文件（或每条记录的末尾），并且必须有一种识别填充位的方法，以便它们可能是如果检索到文件，则剥离。填充物转换应该得到很好的宣传，以使用户能够在存储站点处理文件。图像类型旨在实现高效存储和检索文件和传输二进制数据。它建议所有FTP都接受这种类型实施。3.1.1.4.本地类型数据以大小的逻辑字节传输由强制性第二个参数字节大小指定。字节大小的值必须是十进制整数；有没有默认值。逻辑字节大小不一定与传输字节大小相同。如果有一个字节大小的差异，那么逻辑字节应该是连续打包，无视传输字节边界最后有任何必要的填充物。<span class="grey">Postel &amp; Reynolds [第12页]</span></pre>
        <hr class="noprint"><!--NewPage-->
        <pre
            class="newpage"><span id="page-13"></span>
    <span class="grey"><a href="/doc/html/rfc959">RFC 959 </a>1985年10月</span>文件传输协议文件传输协议当数据到达接收主机时，它将以依赖于逻辑字节大小的方式转换和特定的主持人。这种转变必须是可逆（即，可以检索相同的文件，如果使用相同的参数），并应由FTP实现者。例如，用户将36位浮点数发送到具有32位单词的主机可以将该数据作为本地字节发送逻辑字节大小为36。接收主机会然后被期望存储逻辑字节，以便他们可以很容易地被操纵；在这个例子中，把36位逻辑字节到64位双字应该足够了。在另一个例子中，一对36位字大小的主机可以使用TYPE L 36以文字将数据相互发送。数据将以8位传输字节发送打包，以便9个传输字节携带两个主机字。3.1.1.5。格式控制ASCII和EBCDIC类型也需要一秒钟（可选）参数；这是为了指示哪种垂直格式控件（如果有的话）与文件相关联。以下数据表示类型在FTP中定义：字符文件可以传输到主机之一三个目的：打印、存储和以后检索，或用于处理。如果发送文件打印，接收主机必须知道垂直格式控制被表示。在第二种情况下，它必须可以在主机上存储文件，然后检索它后来以完全相同的形式。最后，它应该是可以将文件从一台主机移动到另一主机并进行处理第二个主机上的文件没有不必要的麻烦。一个单身ASCII或EBCDIC格式不能满足所有这些条件。因此，这些类型有第二个参数指定以下三种格式之一：3.1.1.5.1.非打印这是默认格式，如果第二个（格式）参数被省略。非打印格式必须是被所有FTP实现所接受。当数据到达接收主机时，它将以依赖于逻辑字节大小的方式转换和特定的主持人。这种转变必须是可逆（即，可以检索相同的文件，如果使用相同的参数），并应由FTP实现者。例如，用户将36位浮点数发送到具有32位单词的主机可以将该数据作为本地字节发送逻辑字节大小为36。接收主机会然后被期望存储逻辑字节，以便他们可以很容易地被操纵；在这个例子中，把36位逻辑字节到64位双字应该足够了。在另一个例子中，一对36位字大小的主机可以使用TYPE L 36以文字将数据相互发送。数据将以8位传输字节发送打包，以便9个传输字节携带两个主机字。3.1.1.5。格式控制ASCII和EBCDIC类型也需要一秒钟（可选）参数；这是为了指示哪种垂直格式控件（如果有的话）与文件相关联。以下数据表示类型在FTP中定义：字符文件可以传输到主机之一三个目的：打印、存储和以后检索，或用于处理。如果发送文件打印，接收主机必须知道垂直格式控制被表示。在第二种情况下，它必须可以在主机上存储文件，然后检索它后来以完全相同的形式。最后，它应该是可以将文件从一台主机移动到另一主机并进行处理第二个主机上的文件没有不必要的麻烦。一个单身ASCII或EBCDIC格式不能满足所有这些条件。因此，这些类型有第二个参数指定以下三种格式之一：3.1.1.5.1.非打印这是默认格式，如果第二个（格式）参数被省略。非打印格式必须是被所有FTP实现所接受。<span class="grey">Postel &amp; Reynolds [第13页]</span></pre>
        <hr class="noprint"><!--NewPage-->
        <pre
            class="newpage"><span id="page-14"></span>
    <span class="grey"><a href="/doc/html/rfc959">RFC 959 </a>1985年10月</span>文件传输协议文件传输协议文件不需要包含任何垂直格式信息。如果它被传递给打印机进程，这个过程可能假设间距和边距的标准值。通常，这种格式将用于目的地文件用于处理或仅存储。3.1.1.5.2.TELNET格式控制该文件包含ASCII/EBCDIC垂直格式控件（即&lt;CR&gt;，&lt;LF&gt;，&lt;NL&gt;，&lt;VT&gt;，&lt;FF&gt;）打印机过程将进行适当的解释。&lt;CRLF&gt;，确切地说这个序列也表示行尾。3.1.1.5.2.运输控制（ASA）该文件包含ASA（FORTRAN）垂直格式控制角色。（见RFC 740附录C；和通信ACM的，卷。7，第10号，p。606，1964年10月。）在一个根据ASA标准格式化的行或记录，第一个字符不能打印。相反，它应该用于确定垂直运动纸，应该在其余部分之前发生记录被打印出来。ASA标准规定了以下控制字符：字符垂直间距空白 将纸张向上移动一行0 将纸张向上移动两行1 将纸张移到下一页的顶部+没有移动，即套印显然，打印机流程一定有办法区分结构实体的末端。如果一个文件有记录结构（见下文），这没有问题；记录将在传输过程中明确标记，并且存储。如果文件没有记录结构，&lt;CRLF&gt;线末序列用于分离印刷线，但这些格式效应器被ASA覆盖控制。文件不需要包含任何垂直格式信息。如果它被传递给打印机进程，这个过程可能假设间距和边距的标准值。通常，这种格式将用于目的地文件用于处理或仅存储。3.1.1.5.2.TELNET格式控制该文件包含ASCII/EBCDIC垂直格式控件（即&lt;CR&gt;，&lt;LF&gt;，&lt;NL&gt;，&lt;VT&gt;，&lt;FF&gt;）打印机过程将进行适当的解释。&lt;CRLF&gt;，确切地说这个序列也表示行尾。3.1.1.5.2.运输控制（ASA）该文件包含ASA（FORTRAN）垂直格式控制角色。（见<a href="/doc/html/rfc740#appendix-C">RFC 740附录C</a>；和通信ACM的，卷。7，第10号，p。606，1964年10月。）在一个根据ASA标准格式化的行或记录，第一个字符不能打印。相反，它应该用于确定垂直运动纸，应该在其余部分之前发生记录被打印出来。ASA标准规定了以下控制字符：字符垂直间距空白 将纸张向上移动一行0 将纸张向上移动两行1 将纸张移到下一页的顶部+没有移动，即套印显然，打印机流程一定有办法区分结构实体的末端。如果一个文件有记录结构（见下文），这没有问题；记录将在传输过程中明确标记，并且存储。如果文件没有记录结构，&lt;CRLF&gt;线末序列用于分离印刷线，但这些格式效应器被ASA覆盖控制。<span class="grey">Postel &amp; Reynolds [第14页]</span></pre>
        <hr class="noprint"><!--NewPage-->
        <pre
            class="newpage"><span id="page-15"></span>
    <span class="grey"><a href="/doc/html/rfc959">RFC 959 </a>1985年10月</span>文件传输协议文件传输协议3.1.2.数据结构除了不同的表示类型外，FTP还允许要指定的文件的结构。三个文件结构是在FTP中定义：文件结构，没有内部结构和该文件被认为是一个数据字节的连续序列，记录结构，其中文件由顺序组成记录，和页面结构，其中文件由独立的组成索引页面。如果STRUcture，则默认假设文件结构命令尚未使用，但文件和记录结构都已使用必须接受“文本”文件（即具有类型ASCII的文件）或EBCDIC）通过所有FTP实现。文件的结构将同时影响文件的传输模式（请参阅部分关于传输模式）以及解释和存储文件。文件的“自然”结构将取决于哪个主机存储文件。源代码文件通常存储在固定长度记录的IBM大型机，但在DEC TOPS-20上例如，作为分区成行的字符流通过&lt;CRLF&gt;。如果文件之间不同，则文件传输网站要有用，一个网站必须有某种方式认识到对方对文件的假设。一些网站自然是面向文件的，而另一些网站则自然面向记录，如果一个文件有一个结构被发送到面向另一个的主机。如果一个文本文件与记录结构一起发送到主机，该主机是文件面向，那么该主机应该应用内部根据记录结构转换为文件。显然，这种转变应该是有用的，但它必须也是可逆的，以便可以检索相同的文件使用记录结构。在文件与文件结构一起发送到面向记录的主机，存在什么问题主机应该使用的标准将文件划分为记录可以在本地处理。如果这种划分是必要的，FTP实现应使用行尾序列，3.1.2.数据结构除了不同的表示类型外，FTP还允许要指定的文件的结构。三个文件结构是在FTP中定义：文件结构，没有内部结构和该文件被认为是一个数据字节的连续序列，记录结构，其中文件由顺序组成记录，和页面结构，其中文件由独立的组成索引页面。如果STRUcture，则默认假设文件结构命令尚未使用，但文件和记录结构都已使用必须接受“文本”文件（即具有类型ASCII的文件）或EBCDIC）通过所有FTP实现。文件的结构将同时影响文件的传输模式（请参阅部分关于传输模式）以及解释和存储文件。文件的“自然”结构将取决于哪个主机存储文件。源代码文件通常存储在固定长度记录的IBM大型机，但在DEC TOPS-20上例如，作为分区成行的字符流通过&lt;CRLF&gt;。如果文件之间不同，则文件传输网站要有用，一个网站必须有某种方式认识到对方对文件的假设。一些网站自然是面向文件的，而另一些网站则自然面向记录，如果一个文件有一个结构被发送到面向另一个的主机。如果一个文本文件与记录结构一起发送到主机，该主机是文件面向，那么该主机应该应用内部根据记录结构转换为文件。显然，这种转变应该是有用的，但它必须也是可逆的，以便可以检索相同的文件使用记录结构。在文件与文件结构一起发送到面向记录的主机，存在什么问题主机应该使用的标准将文件划分为记录可以在本地处理。如果这种划分是必要的，FTP实现应使用行尾序列，<span class="grey">Postel &amp; Reynolds [第15页]</span></pre>
        <hr class="noprint"><!--NewPage-->
        <pre
            class="newpage"><span id="page-16"></span>
    <span class="grey"><a href="/doc/html/rfc959">RFC 959 </a>1985年10月</span>文件传输协议文件传输协议&lt;CRLF&gt;用于ASCII，或&lt;NL&gt;用于EBCDIC文本文件，作为分隔符。如果FTP实现采用这种技术，它如果文件是，必须准备好逆转转换使用文件结构检索。3.1.2.1.文件结构如果STRUcture，则默认假设文件结构命令尚未使用。在文件结构中，没有内部结构，并且文件被认为是一个连续的数据序列字节。3.1.2.2.记录结构“文本”文件必须接受记录结构（即所有FTP实现的带有TYPE ASCII或EBCDIC的文件。在记录结构中，文件由顺序组成记录。3.1.2.3.页面结构为了传输不连续的文件，FTP定义了一个页面结构。这种类型的文件有时被称为“随机访问文件”，甚至作为“空洞文件”。在这些文件有时还有其他与之相关的信息整个文件（例如，文件描述符），或带有文件部分（例如，页面访问控制），或两者兼而有之。在FTP中，文件的部分称为页面。提供各种页面大小和相关信息，每个页面都带有页面标题。页面标题具有以下定义的字段：标题长度页面标题中的逻辑字节数包括这个字节。最小标题长度为4。页面索引文件这一部分的逻辑页码。这不是这个的传输序列号页面，但用于识别此页面的索引文件。&lt;CRLF&gt;用于ASCII，或&lt;NL&gt;用于EBCDIC文本文件，作为分隔符。如果FTP实现采用这种技术，它如果文件是，必须准备好逆转转换使用文件结构检索。3.1.2.1.文件结构如果STRUcture，则默认假设文件结构命令尚未使用。在文件结构中，没有内部结构，并且文件被认为是一个连续的数据序列字节。3.1.2.2.记录结构“文本”文件必须接受记录结构（即所有FTP实现的带有TYPE ASCII或EBCDIC的文件。在记录结构中，文件由顺序组成记录。3.1.2.3.页面结构为了传输不连续的文件，FTP定义了一个页面结构。这种类型的文件有时被称为“随机访问文件”，甚至作为“空洞文件”。在这些文件有时还有其他与之相关的信息整个文件（例如，文件描述符），或带有文件部分（例如，页面访问控制），或两者兼而有之。在FTP中，文件的部分称为页面。提供各种页面大小和相关信息，每个页面都带有页面标题。页面标题具有以下定义的字段：标题长度页面标题中的逻辑字节数包括这个字节。最小标题长度为4。页面索引文件这一部分的逻辑页码。这不是这个的传输序列号页面，但用于识别此页面的索引文件。<span class="grey">Postel &amp; Reynolds [第16页]</span></pre>
        <hr class="noprint"><!--NewPage-->
        <pre
            class="newpage"><span id="page-17"></span>
    <span class="grey"><a href="/doc/html/rfc959">RFC 959 </a>1985年10月</span>文件传输协议文件传输协议数据长度页面数据中的逻辑字节数。这个最小数据长度为0。页面类型这是页面的类型。以下页面类型被定义为：0 = 最后一页这用于指示分页的结尾结构化传输。标题长度必须是4，数据长度必须是0。1 = 简单页面这是简单分页文件的正常类型没有页面级别相关控件信息。标题长度必须为4。2 = 描述符页面这种类型用于传输描述性整个文件的信息。3 = 访问控制页面此类型包括一个额外的标题字段对于具有页面级访问控制的分页文件信息。标题长度必须为5。可选字段可以使用其他标题字段来为每页提供例如，控制信息，每个页面访问控制。所有字段都是一个逻辑字节的长度。逻辑字节大小由TYPE命令指定。见附录I页面结构中的更多细节和具体案例。关于参数的注意事项：必须存储文件和如果检索到的版本是，则使用相同的参数检索数据长度页面数据中的逻辑字节数。这个最小数据长度为0。页面类型这是页面的类型。以下页面类型被定义为：0 = 最后一页这用于指示分页的结尾结构化传输。标题长度必须是4，数据长度必须是0。1 = 简单页面这是简单分页文件的正常类型没有页面级别相关控件信息。标题长度必须为4。2 = 描述符页面这种类型用于传输描述性整个文件的信息。3 = 访问控制页面此类型包括一个额外的标题字段对于具有页面级访问控制的分页文件信息。标题长度必须为5。可选字段可以使用其他标题字段来为每页提供例如，控制信息，每个页面访问控制。所有字段都是一个逻辑字节的长度。逻辑字节大小由TYPE命令指定。见<a href="#appendix-I">附录I</a>页面结构中的更多细节和具体案例。关于参数的注意事项：必须存储文件和如果检索到的版本是，则使用相同的参数检索<span class="grey">Postel &amp; Reynolds [第17页]</span></pre>
        <hr class="noprint"><!--NewPage-->
        <pre
            class="newpage"><span id="page-18"></span>
    <span class="grey"><a href="/doc/html/rfc959">RFC 959 </a>1985年10月</span>文件传输协议文件传输协议与最初传输的版本相同。相反，FTP实现必须返回与原始文件相同的文件如果用于存储和检索文件的参数相同。3.2.建立数据连接传输数据的机制包括设置数据连接到适当的端口并选择参数用于转移。用户和服务器-DTP都有默认值数据端口。用户处理默认数据端口与控制连接端口（即U）。服务器进程默认值数据端口是与控制连接端口相邻的端口（即L-1）。传输字节大小为8位字节。这个字节大小是相关的仅用于数据的实际传输；它与在主机的文件系统中表示数据。被动数据传输过程（这可能是用户DTP或第二个服务器-DTP）应在之前“听”数据端口发送传输请求命令。FTP请求命令确定数据传输的方向。服务器，在接收传输请求，将启动数据连接到港口。当建立连接时，数据DTP之间的传输开始，服务器-PI发送一个确认回复用户-PI。每个FTP实现都必须支持使用默认数据端口，只有USER-PI可以启动非默认的更改港口。用户可以指定一个备用数据端口使用PORT命令。用户可能希望将文件转储到TAC上线路打印机或从第三方主机检索。在后者案例，用户-PI与两者设置控制连接服务器-PI。然后（通过FTP命令）告诉一个服务器“倾听”对方将发起的连接。这个user-PI向一个server-PI发送一个指示数据的PORT命令另一个港口。最后，两者都发送了适当的传输命令。命令和回复的确切顺序在用户控制器和服务器之间发送定义在关于FTP回复的部分。一般来说，维护数据是服务器的责任连接--启动它并关闭它。这个的例外与最初传输的版本相同。相反，FTP实现必须返回与原始文件相同的文件如果用于存储和检索文件的参数相同。3.2.建立数据连接传输数据的机制包括设置数据连接到适当的端口并选择参数用于转移。用户和服务器-DTP都有默认值数据端口。用户处理默认数据端口与控制连接端口（即U）。服务器进程默认值数据端口是与控制连接端口相邻的端口（即L-1）。传输字节大小为8位字节。这个字节大小是相关的仅用于数据的实际传输；它与在主机的文件系统中表示数据。被动数据传输过程（这可能是用户DTP或第二个服务器-DTP）应在之前“听”数据端口发送传输请求命令。FTP请求命令确定数据传输的方向。服务器，在接收传输请求，将启动数据连接到港口。当建立连接时，数据DTP之间的传输开始，服务器-PI发送一个确认回复用户-PI。每个FTP实现都必须支持使用默认数据端口，只有USER-PI可以启动非默认的更改港口。用户可以指定一个备用数据端口使用PORT命令。用户可能希望将文件转储到TAC上线路打印机或从第三方主机检索。在后者案例，用户-PI与两者设置控制连接服务器-PI。然后（通过FTP命令）告诉一个服务器“倾听”对方将发起的连接。这个user-PI向一个server-PI发送一个指示数据的PORT命令另一个港口。最后，两者都发送了适当的传输命令。命令和回复的确切顺序在用户控制器和服务器之间发送定义在关于FTP回复的部分。一般来说，维护数据是服务器的责任连接--启动它并关闭它。这个的例外<span class="grey">Postel &amp; Reynolds [第18页]</span></pre>
        <hr class="noprint"><!--NewPage-->
        <pre
            class="newpage"><span id="page-19"></span>
    <span class="grey"><a href="/doc/html/rfc959">RFC 959 </a>1985年10月</span>文件传输协议文件传输协议是当用户-DTP以传输模式发送数据时需要关闭连接以指示EOF。服务器在以下条件下必须关闭数据连接：1.服务器已完成以传输模式发送数据这需要一个接近来表示EOF。2.服务器接收来自用户的ABORT命令。3.端口规范由来自的命令更改用户。4.控制连接以合法或其他方式关闭。5.出现不可恢复的错误条件。否则，关闭是一个服务器选项，其行使服务器必须通过250或226向用户进程指示仅回复。3.3.数据连接管理默认数据连接端口：所有FTP实现必须支持使用默认数据连接端口，并且只有User-PI可能会启动非默认端口的使用。协商非默认数据端口：User-PI可以指定一个带有PORT命令的非默认用户端数据端口。这个User-PI可能会要求服务器端识别非默认带有PASV命令的服务器端数据端口。自从连接以来由一对地址定义，这些操作中的任何一个是足以获得不同的数据连接，但仍然是允许的执行两个命令，在数据的两端使用新端口连接。重用数据连接：使用数据流模式时传输文件的结尾必须通过关闭来指示连接。如果要有多个文件，这会造成问题在会话中传输，因为需要TCP来保存一段时间的连接记录，以保证可靠沟通。因此，连接不能立即重新打开。这个问题有两种解决方案。首先是协商一个非默认端口。第二个是使用另一个转移模式。关于传输模式的评论。流传输模式是是当用户-DTP以传输模式发送数据时需要关闭连接以指示EOF。服务器在以下条件下必须关闭数据连接：1.服务器已完成以传输模式发送数据这需要一个接近来表示EOF。2.服务器接收来自用户的ABORT命令。3.端口规范由来自的命令更改用户。4.控制连接以合法或其他方式关闭。5.出现不可恢复的错误条件。否则，关闭是一个服务器选项，其行使服务器必须通过250或226向用户进程指示仅回复。3.3.数据连接管理默认数据连接端口：所有FTP实现必须支持使用默认数据连接端口，并且只有User-PI可能会启动非默认端口的使用。协商非默认数据端口：User-PI可以指定一个带有PORT命令的非默认用户端数据端口。这个User-PI可能会要求服务器端识别非默认带有PASV命令的服务器端数据端口。自从连接以来由一对地址定义，这些操作中的任何一个是足以获得不同的数据连接，但仍然是允许的执行两个命令，在数据的两端使用新端口连接。重用数据连接：使用数据流模式时传输文件的结尾必须通过关闭来指示连接。如果要有多个文件，这会造成问题在会话中传输，因为需要TCP来保存一段时间的连接记录，以保证可靠沟通。因此，连接不能立即重新打开。这个问题有两种解决方案。首先是协商一个非默认端口。第二个是使用另一个转移模式。关于传输模式的评论。流传输模式是<span class="grey">Postel &amp; Reynolds [第19页]</span></pre>
        <hr class="noprint"><!--NewPage-->
        <pre
            class="newpage"><span id="page-20"></span>
    <span class="grey"><a href="/doc/html/rfc959">RFC 959 </a>1985年10月</span>文件传输协议文件传输协议本质上是不可靠的，因为人们无法确定是否连接是否过早关闭。其他传输模式（块，压缩）不要关闭连接以指示文件结束。他们有足够的FTP编码，数据可以解析连接以确定文件的结尾。因此，使用这些模式可以保持数据连接打开状态用于多个文件传输。3.4.传输模式传输数据的下一个考虑因素是选择适当的传输模式。有三种模式：一种格式化数据并允许重新启动程序；一个也压缩数据以进行高效传输；以及通过的数据很少或没有处理的数据。在最后一个案例中，模式与结构属性交互，以确定类型处理。在压缩模式下，表示类型确定填充字节。所有数据传输必须以文件结束（EOF）完成可以通过关闭明确声明或暗示数据连接。对于具有记录结构的文件，所有记录结束标记（EOR）是明确的，包括最后一个。对于在页面结构中传输的文件，“最后一页”页面类型是使用。注意：在本节的其余部分中，字节表示“传输字节”除非另有明确说明。为了标准化传输的目的，发送主机将翻译其内部行尾或记录尾的引号进入传输模式和文件规定的表示形式结构，接收主机将执行逆翻译为其内部引号。IBM大型机记录计数字段可能无法在另一个主机上被识别，所以记录结束信息可以作为两字节控制传输代码在流模式下或作为块或压缩中的标记位模式描述符。ASCII或EBCDIC文件中的行尾，没有记录结构应由&lt;CRLF&gt;或&lt;NL&gt;表示，分别。由于这些转变意味着额外的工作一些系统，传输非记录结构的相同系统文本文件可能希望使用二进制表示和流传输模式。本质上是不可靠的，因为人们无法确定是否连接是否过早关闭。其他传输模式（块，压缩）不要关闭连接以指示文件结束。他们有足够的FTP编码，数据可以解析连接以确定文件的结尾。因此，使用这些模式可以保持数据连接打开状态用于多个文件传输。3.4.传输模式传输数据的下一个考虑因素是选择适当的传输模式。有三种模式：一种格式化数据并允许重新启动程序；一个也压缩数据以进行高效传输；以及通过的数据很少或没有处理的数据。在最后一个案例中，模式与结构属性交互，以确定类型处理。在压缩模式下，表示类型确定填充字节。所有数据传输必须以文件结束（EOF）完成可以通过关闭明确声明或暗示数据连接。对于具有记录结构的文件，所有记录结束标记（EOR）是明确的，包括最后一个。对于在页面结构中传输的文件，“最后一页”页面类型是使用。注意：在本节的其余部分中，字节表示“传输字节”除非另有明确说明。为了标准化传输的目的，发送主机将翻译其内部行尾或记录尾的引号进入传输模式和文件规定的表示形式结构，接收主机将执行逆翻译为其内部引号。IBM大型机记录计数字段可能无法在另一个主机上被识别，所以记录结束信息可以作为两字节控制传输代码在流模式下或作为块或压缩中的标记位模式描述符。ASCII或EBCDIC文件中的行尾，没有记录结构应由&lt;CRLF&gt;或&lt;NL&gt;表示，分别。由于这些转变意味着额外的工作一些系统，传输非记录结构的相同系统文本文件可能希望使用二进制表示和流传输模式。<span class="grey">Postel &amp; Reynolds [第 20 页]</span></pre>
        <hr class="noprint"><!--NewPage-->
        <pre
            class="newpage"><span id="page-21"></span>
    <span class="grey"><a href="/doc/html/rfc959">RFC 959 </a>1985年10月</span>文件传输协议文件传输协议FTP中定义了以下传输模式：3.4.1.流模式数据以字节流的形式传输。没有对所用表示类型的限制；记录结构是允许的。在记录结构化文件中，将分别显示EOR和EOF通过两个字节的控制代码。控制代码的第一个字节将是所有人，逃生角色。第二个字节将在其他地方有低订单位和零，用于EOR和EOF的第二个低阶位；也就是说，字节将有EOR值1，EOF值2。EOR和EOF可能是在通过转动两者传输的最后一个字节上一起指示低阶位（即值3）。如果所有字节中的一个字节打算作为数据发送，它应该在控制代码的第二个字节。如果结构是文件结构，则EOF表示为发送主机关闭数据连接，所有字节都是数据字节。3.4.2.阻止模式该文件作为一系列数据块传输，前面有一个或多个标题字节。标题字节包含一个计数字段和描述符代码。计数字段表示数据块的总长度（以字节为单位），从而标记下一个数据块的开始（没有填充位）。描述符代码定义：文件中的最后一个块（EOF）最后记录中的块（EOR），重新启动标记（请参阅部分错误恢复和重新启动）或可疑数据（即数据被转移被怀疑有错误，不可靠）。最后一个代码不用于FTP中的错误控制。它的动机是网站交换某些类型的愿望数据（例如地震或天气数据）以发送和接收所有尽管存在局部错误（例如“磁带读取”）的数据错误”），但在传输中表明某些部分是可疑的）。此中允许记录结构模式，可以使用任何表示类型。标题由三个字节组成。在24位中标题信息，16个低序位应代表字节计数，8个高阶位应表示描述符代码如下所示。FTP中定义了以下传输模式：3.4.1.流模式数据以字节流的形式传输。没有对所用表示类型的限制；记录结构是允许的。在记录结构化文件中，将分别显示EOR和EOF通过两个字节的控制代码。控制代码的第一个字节将是所有人，逃生角色。第二个字节将在其他地方有低订单位和零，用于EOR和EOF的第二个低阶位；也就是说，字节将有EOR值1，EOF值2。EOR和EOF可能是在通过转动两者传输的最后一个字节上一起指示低阶位（即值3）。如果所有字节中的一个字节打算作为数据发送，它应该在控制代码的第二个字节。如果结构是文件结构，则EOF表示为发送主机关闭数据连接，所有字节都是数据字节。3.4.2.阻止模式该文件作为一系列数据块传输，前面有一个或多个标题字节。标题字节包含一个计数字段和描述符代码。计数字段表示数据块的总长度（以字节为单位），从而标记下一个数据块的开始（没有填充位）。描述符代码定义：文件中的最后一个块（EOF）最后记录中的块（EOR），重新启动标记（请参阅部分错误恢复和重新启动）或可疑数据（即数据被转移被怀疑有错误，不可靠）。最后一个代码不用于FTP中的错误控制。它的动机是网站交换某些类型的愿望数据（例如地震或天气数据）以发送和接收所有尽管存在局部错误（例如“磁带读取”）的数据错误”），但在传输中表明某些部分是可疑的）。此中允许记录结构模式，可以使用任何表示类型。标题由三个字节组成。在24位中标题信息，16个低序位应代表字节计数，8个高阶位应表示描述符代码如下所示。<span class="grey">Postel &amp; Reynolds [第21页]</span></pre>
        <hr class="noprint"><!--NewPage-->
        <pre
            class="newpage"><span id="page-22"></span>
    <span class="grey"><a href="/doc/html/rfc959">RFC 959 </a>1985年10月</span>文件传输协议文件传输协议块头+----------------+----------------+----------------+| 描述符 | 字节计数 || 8位 | 16位 |+----------------+----------------+----------------+描述符代码由...中的位标志表示描述符字节。分配了四个代码，每个代码代码号是相应位的十进制值字节。代码含义128 数据块的结束是EOR64 数据块的结束是EOF32 数据块中疑似错误16 数据块是一个重新启动标记使用此编码，多个描述符编码条件可能存在于特定块中。尽可能多的位可能会被标记。重新启动标记嵌入到数据流中，作为代表可打印的8位字节的整数在控件上使用的语言中的字符连接（例如，默认--NVT-ASCII）。&lt;SP&gt;（空间，在适当的语言）不得在重新启动标记内使用。例如，要传输一个六个字符的标记，以下将发送：+--------+--------+--------+|Descrptr| 字节计数 ||code= 16| = 6 |+--------+--------+--------++--------+--------+--------+| 标记 | 标记 | 标记 || 8位 | 8位 | 8位 |+--------+--------+--------++--------+--------+--------+| 标记 | 标记 | 标记 || 8位 | 8位 | 8位 |+--------+--------+--------+块头+----------------+----------------+----------------+| 描述符 | 字节计数 || 8位 | 16位 |+----------------+----------------+----------------+描述符代码由...中的位标志表示描述符字节。分配了四个代码，每个代码代码号是相应位的十进制值字节。代码含义128 数据块的结束是EOR64 数据块的结束是EOF32 数据块中疑似错误16 数据块是一个重新启动标记使用此编码，多个描述符编码条件可能存在于特定块中。尽可能多的位可能会被标记。重新启动标记嵌入到数据流中，作为代表可打印的8位字节的整数在控件上使用的语言中的字符连接（例如，默认--NVT-ASCII）。&lt;SP&gt;（空间，在适当的语言）不得在重新启动标记内使用。例如，要传输一个六个字符的标记，以下将发送：+--------+--------+--------+|Descrptr| 字节计数 ||code= 16| = 6 |+--------+--------+--------++--------+--------+--------+| 标记 | 标记 | 标记 || 8位 | 8位 | 8位 |+--------+--------+--------++--------+--------+--------+| 标记 | 标记 | 标记 || 8位 | 8位 | 8位 |+--------+--------+--------+<span class="grey">Postel &amp; Reynolds [第22页]</span></pre>
        <hr class="noprint"><!--NewPage-->
        <pre
            class="newpage"><span id="page-23"></span>
    <span class="grey"><a href="/doc/html/rfc959">RFC 959 </a>1985年10月</span>文件传输协议文件传输协议3.4.3.压缩模式需要发送三种信息：常规数据，以字节字符串发送；压缩数据，包括复制或填充物；以及控制信息，发送两字节转义序列。如果n&gt;0字节（最多127）的常规数据被发送，这些n个字节前面有一个字节，其中最左边的位设置为0，最右边的7位包含数字n。字节字符串：1 7 8 8+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|0| n | | d(1) | ... | d(n) |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+^ ^|---n字节---|数据n个数据字节的字符串d(1)，...，d（n）计数n必须是正数。要压缩数据字节d的n个复制字符串，发送以下2个字节：复制字节：2 6 8+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|1 0| n | | d |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+n个填充字节的字符串可以压缩成一个字节，其中填充字节随表示而变化类型。如果类型是ASCII或EBCDIC，则填充字节为&lt;SP&gt;（空间，ASCII代码32，EBCDIC代码64）。如果类型是图像或本地字节，填充物是零字节。填充字符串：2 6+-+-+-+-+-+-+-+-+|1 1| n |+-+-+-+-+-+-+-+-+转义序列是一个双字节，第一个是3.4.3.压缩模式需要发送三种信息：常规数据，以字节字符串发送；压缩数据，包括复制或填充物；以及控制信息，发送两字节转义序列。如果n&gt;0字节（最多127）的常规数据被发送，这些n个字节前面有一个字节，其中最左边的位设置为0，最右边的7位包含数字n。字节字符串：1 7 8 8+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|0| n | | d(1) | ... | d(n) |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+^ ^|---n字节---|数据n个数据字节的字符串d(1)，...，d（n）计数n必须是正数。要压缩数据字节d的n个复制字符串，发送以下2个字节：复制字节：2 6 8+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|1 0| n | | d |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+n个填充字节的字符串可以压缩成一个字节，其中填充字节随表示而变化类型。如果类型是ASCII或EBCDIC，则填充字节为&lt;SP&gt;（空间，ASCII代码32，EBCDIC代码64）。如果类型是图像或本地字节，填充物是零字节。填充字符串：2 6+-+-+-+-+-+-+-+-+|1 1| n |+-+-+-+-+-+-+-+-+转义序列是一个双字节，第一个是<span class="grey">Postel &amp; Reynolds [第23页]</span></pre>
        <hr class="noprint"><!--NewPage-->
        <pre
            class="newpage"><span id="page-24"></span>
    <span class="grey"><a href="/doc/html/rfc959">RFC 959 </a>1985年10月</span>文件传输协议文件传输协议转义字节（所有零），第二个包含在块模式下定义的描述符代码。描述符代码与块模式的含义相同，适用于后续的字节字符串。压缩模式对于获得增加的带宽很有用非常大的网络传输，只需一点额外的CPU成本。它可以最有效地用于缩小打印机的尺寸文件，如RJE主机生成的文件。3.5.错误恢复和重新启动没有检测数据中丢失或被打乱的位的规定传输；此级别的错误控制由TCP处理。然而，提供了重新启动程序来保护用户免受严重系统故障（包括主机故障，一个FTP进程，或底层网络）。重新启动过程仅为块定义并压缩数据传输模式。它需要数据发送者插入数据流中带有一些标记的特殊标记代码信息。标记信息只对...有意义发件人，但必须由默认的可打印字符组成或控制连接的协商语言（ASCII或EBCDIC）。标记可以表示位计数、记录计数或任何系统可以识别数据的其他信息检查站。数据接收者，如果它实现了重新启动程序，然后标记这个的相应位置接收系统中的标记，并将此信息返回给用户。如果发生系统故障，用户可以重新启动数据通过FTP重新启动识别标记点进行传输程序。以下示例说明了使用重新启动过程。数据发送者在...中插入适当的标记块数据流在方便点。接收主机标记其文件系统中的相应数据点，并传达最后一个向用户提供已知的发送者和接收者标记信息，要么直接或通过110回复中的控制连接（取决于关于谁是发件人）。如果发生系统故障，用户或控制器进程在最后一个服务器上重新启动服务器通过发送使用服务器标记代码的重新启动命令来标记它的论点。重新启动命令通过控件传输转义字节（所有零），第二个包含在块模式下定义的描述符代码。描述符代码与块模式的含义相同，适用于后续的字节字符串。压缩模式对于获得增加的带宽很有用非常大的网络传输，只需一点额外的CPU成本。它可以最有效地用于缩小打印机的尺寸文件，如RJE主机生成的文件。3.5.错误恢复和重新启动没有检测数据中丢失或被打乱的位的规定传输；此级别的错误控制由TCP处理。然而，提供了重新启动程序来保护用户免受严重系统故障（包括主机故障，一个FTP进程，或底层网络）。重新启动过程仅为块定义并压缩数据传输模式。它需要数据发送者插入数据流中带有一些标记的特殊标记代码信息。标记信息只对...有意义发件人，但必须由默认的可打印字符组成或控制连接的协商语言（ASCII或EBCDIC）。标记可以表示位计数、记录计数或任何系统可以识别数据的其他信息检查站。数据接收者，如果它实现了重新启动程序，然后标记这个的相应位置接收系统中的标记，并将此信息返回给用户。如果发生系统故障，用户可以重新启动数据通过FTP重新启动识别标记点进行传输程序。以下示例说明了使用重新启动过程。数据发送者在...中插入适当的标记块数据流在方便点。接收主机标记其文件系统中的相应数据点，并传达最后一个向用户提供已知的发送者和接收者标记信息，要么直接或通过110回复中的控制连接（取决于关于谁是发件人）。如果发生系统故障，用户或控制器进程在最后一个服务器上重新启动服务器通过发送使用服务器标记代码的重新启动命令来标记它的论点。重新启动命令通过控件传输<span class="grey">Postel &amp; Reynolds [第24页]</span></pre>
        <hr class="noprint"><!--NewPage-->
        <pre
            class="newpage"><span id="page-25"></span>
    <span class="grey"><a href="/doc/html/rfc959">RFC 959 </a>1985年10月</span>文件传输协议文件传输协议连接，紧接着是命令（例如RETR、STOR或LIST）在系统运行时正在执行发生了故障。连接，紧接着是命令（例如RETR、STOR或LIST）在系统运行时正在执行发生了故障。<span class="h2" id="autoid-4"><a class="selflink" id="section-4" href="#section-4">4</a>。文件传输功能</span>从用户-PI到服务器-PI的通信通道是从用户-PI到服务器-PI的通信通道是建立为从用户到标准服务器的TCP连接港口。用户协议解释器负责发送FTP命令和解释收到的回复；服务器-PI解释命令，发送回复，并指示其DTP设置数据连接和传输数据。如果第二方数据传输（被动传输过程）是用户-DTP，然后它通过用户-FTP主机的内部协议进行管理；如果它是第二个服务器-DTP，然后它由其PI在命令上管理用户-PI。下一节将讨论FTP回复。铟本节中一些命令的描述，它是有助于明确可能的回复。4.1.FTP命令4.1.1.访问控制命令以下命令指定了访问控制标识符（命令代码显示在括号中）。用户名（用户）参数字段是标识用户的Telnet字符串。用户标识是...所要求的服务器用于访问其文件系统。这个命令将通常是用户在之后传输的第一个命令控制连接已建立（一些服务器可能需要这个）。以以下形式提供其他识别信息密码和/或帐户命令也可能要求一些服务器。服务器可能允许一个新的USER命令在任何时候输入，以更改访问控制和/或会计信息。这有效果清除任何用户、密码和帐户信息提供并再次开始登录序列。所有传输参数保持不变，任何文件传输在旧的访问控制下完成进度参数。建立为从用户到标准服务器的TCP连接港口。用户协议解释器负责发送FTP命令和解释收到的回复；服务器-PI解释命令，发送回复，并指示其DTP设置数据连接和传输数据。如果第二方数据传输（被动传输过程）是用户-DTP，然后它通过用户-FTP主机的内部协议进行管理；如果它是第二个服务器-DTP，然后它由其PI在命令上管理用户-PI。下一节将讨论FTP回复。铟本节中一些命令的描述，它是有助于明确可能的回复。4.1.FTP命令4.1.1.访问控制命令以下命令指定了访问控制标识符（命令代码显示在括号中）。用户名（用户）参数字段是标识用户的Telnet字符串。用户标识是...所要求的服务器用于访问其文件系统。这个命令将通常是用户在之后传输的第一个命令控制连接已建立（一些服务器可能需要这个）。以以下形式提供其他识别信息密码和/或帐户命令也可能要求一些服务器。服务器可能允许一个新的USER命令在任何时候输入，以更改访问控制和/或会计信息。这有效果清除任何用户、密码和帐户信息提供并再次开始登录序列。所有传输参数保持不变，任何文件传输在旧的访问控制下完成进度参数。<span class="grey">Postel &amp; Reynolds [第25页]</span></pre>
        <hr class="noprint"><!--NewPage-->
        <pre
            class="newpage"><span id="page-26"></span>
    <span class="grey"><a href="/doc/html/rfc959">RFC 959 </a>1985年10月</span>文件传输协议文件传输协议密码（PASS）参数字段是一个Telnet字符串，指定用户的密码。此命令必须紧随其后用户名命令，对于某些网站，完成用户的访问控制的识别。自密码以来信息非常敏感，总的来说是可取的“屏蔽”它或抑制打字。看来服务器没有万无一失的方法来实现这一点。它是因此，用户FTP进程有责任隐藏敏感的密码信息。帐户（ACCT）参数字段是一个Telnet字符串，标识用户的帐户。该命令不一定与用户相关命令，因为一些网站可能需要一个帐户才能登录和其他仅用于特定访问，例如存储文件。铟在后一种情况下，命令可以随时到达。有回复代码来区分这些案例自动化：当登录需要帐户信息时，对成功的PASSword命令的响应是回复代码332.另一方面，如果帐户信息不是登录需要，对成功密码的回复命令是230；如果需要帐户信息稍后在对话中发出的命令，服务器应该返回332或532回复，具体取决于它是否存储（等待收到ACCounT命令）或丢弃分别指挥。更改工作目录（CWD）此命令允许用户使用不同的用于文件存储或检索的目录或数据集，无需更改他的登录名或会计信息。转移参数同样保持不变。论点是一个指定目录或其他系统依赖的路径名文件组指示符。更改为父目录（CDUP）此命令是CWD的一个特殊情况，并包含在简化传输程序的实施操作系统之间的目录树不同密码（PASS）参数字段是一个Telnet字符串，指定用户的密码。此命令必须紧随其后用户名命令，对于某些网站，完成用户的访问控制的识别。自密码以来信息非常敏感，总的来说是可取的“屏蔽”它或抑制打字。看来服务器没有万无一失的方法来实现这一点。它是因此，用户FTP进程有责任隐藏敏感的密码信息。帐户（ACCT）参数字段是一个Telnet字符串，标识用户的帐户。该命令不一定与用户相关命令，因为一些网站可能需要一个帐户才能登录和其他仅用于特定访问，例如存储文件。铟在后一种情况下，命令可以随时到达。有回复代码来区分这些案例自动化：当登录需要帐户信息时，对成功的PASSword命令的响应是回复代码332.另一方面，如果帐户信息不是登录需要，对成功密码的回复命令是230；如果需要帐户信息稍后在对话中发出的命令，服务器应该返回332或532回复，具体取决于它是否存储（等待收到ACCounT命令）或丢弃分别指挥。更改工作目录（CWD）此命令允许用户使用不同的用于文件存储或检索的目录或数据集，无需更改他的登录名或会计信息。转移参数同样保持不变。论点是一个指定目录或其他系统依赖的路径名文件组指示符。更改为父目录（CDUP）此命令是CWD的一个特殊情况，并包含在简化传输程序的实施操作系统之间的目录树不同<span class="grey">Postel &amp; Reynolds [第26页]</span></pre>
        <hr class="noprint"><!--NewPage-->
        <pre
            class="newpage"><span id="page-27"></span>
    <span class="grey"><a href="/doc/html/rfc959">RFC 959 </a>1985年10月</span>文件传输协议文件传输协议命名父目录的语法。回复代码应与CWD的回复代码相同。看命名父目录的语法。回复代码应与CWD的回复代码相同。看<a href="#appendix-I">附录二</a>附录二了解更多详情。结构安装（SMNT）此命令允许用户挂载不同的文件系统数据结构，无需更改他的登录名或会计信息。传输参数类似不变。参数是一个路径名，指定一个目录或其他系统相关文件组指示符。重新开始（REIN）此命令终止用户，刷新所有I/O和帐户信息，除了允许任何正在进行的转移完成。所有参数都重置为默认设置控制连接保持打开状态。这是相同的用户发现自己紧接着的状态控制连接已打开。用户命令可能是预计会随后。注销（退出）此命令终止用户，如果文件传输不是在进行中，服务器关闭控制连接。如果文件传输正在进行中，连接将保持不变打开结果响应，然后服务器将关闭它。如果用户进程正在为多个用户传输文件但不希望关闭然后重新打开连接每个，然后应该使用REIN命令而不是QUIT。意外关闭控制连接将导致服务器采取中止（ABOR）和注销（退出）。4.1.2.传输参数命令所有数据传输参数都有默认值，并且只需要指定数据传输参数的命令如果要更改默认参数值。默认值是最后指定的值，或者如果没有值指定，标准默认值如本文所述。这个意味着服务器必须“记住”适用的默认值价值观。命令可以按任何顺序排列，除非它们必须在FTP服务请求之前。以下命令指定数据传输参数：了解更多详情。结构安装（SMNT）此命令允许用户挂载不同的文件系统数据结构，无需更改他的登录名或会计信息。传输参数类似不变。参数是一个路径名，指定一个目录或其他系统相关文件组指示符。重新开始（REIN）此命令终止用户，刷新所有I/O和帐户信息，除了允许任何正在进行的转移完成。所有参数都重置为默认设置控制连接保持打开状态。这是相同的用户发现自己紧接着的状态控制连接已打开。用户命令可能是预计会随后。注销（退出）此命令终止用户，如果文件传输不是在进行中，服务器关闭控制连接。如果文件传输正在进行中，连接将保持不变打开结果响应，然后服务器将关闭它。如果用户进程正在为多个用户传输文件但不希望关闭然后重新打开连接每个，然后应该使用REIN命令而不是QUIT。意外关闭控制连接将导致服务器采取中止（ABOR）和注销（退出）。4.1.2.传输参数命令所有数据传输参数都有默认值，并且只需要指定数据传输参数的命令如果要更改默认参数值。默认值是最后指定的值，或者如果没有值指定，标准默认值如本文所述。这个意味着服务器必须“记住”适用的默认值价值观。命令可以按任何顺序排列，除非它们必须在FTP服务请求之前。以下命令指定数据传输参数：<span class="grey">Postel &amp; Reynolds [第27页]</span></pre>
        <hr class="noprint"><!--NewPage-->
        <pre
            class="newpage"><span id="page-28"></span>
    <span class="grey"><a href="/doc/html/rfc959">RFC 959 </a>1985年10月</span>文件传输协议文件传输协议数据端口（端口）参数是数据端口的HOST-PORT规范用于数据连接。两者都有默认值用户和服务器数据端口，在正常情况下不需要此命令及其回复。如果使用此命令，参数是a的串联32位互联网主机地址和16位TCP端口地址。此地址信息分为8位字段和每个字段的值以十进制数字传输（在字符串表示）。字段是分开的用逗号。端口命令将是：端口h1，h2，h3，h4，p1，p2其中h1是互联网主机的高阶8位地址。被动（PASV）此命令请求服务器-DTP“收听”数据端口（这不是其默认数据端口）并等待连接，而不是在收到一个时启动一个转移命令。对此命令的响应包括此服务器正在监听的主机和端口地址。表示类型（类型）参数指定了所描述的表示类型在数据表示和存储部分。几个类型采用第二个参数。第一个参数是由单个Telnet字符表示，就像第二个字符一样ASCII和EBCDIC的格式参数；第二个参数对于本地字节是一个表示字节大小的十进制整数。参数由&lt;SP&gt;（空间，ASCII代码）分隔32）。为类型分配了以下代码：\ /A - ASCII | | N - 非打印|-&gt;&lt;-| T - Telnet格式效果器E - EBCDIC| | C - 马车控制（ASA）/ \I - 图像L &lt;字节大小&gt; - 本地字节大小数据端口（端口）参数是数据端口的HOST-PORT规范用于数据连接。两者都有默认值用户和服务器数据端口，在正常情况下不需要此命令及其回复。如果使用此命令，参数是a的串联32位互联网主机地址和16位TCP端口地址。此地址信息分为8位字段和每个字段的值以十进制数字传输（在字符串表示）。字段是分开的用逗号。端口命令将是：端口h1，h2，h3，h4，p1，p2其中h1是互联网主机的高阶8位地址。被动（PASV）此命令请求服务器-DTP“收听”数据端口（这不是其默认数据端口）并等待连接，而不是在收到一个时启动一个转移命令。对此命令的响应包括此服务器正在监听的主机和端口地址。表示类型（类型）参数指定了所描述的表示类型在数据表示和存储部分。几个类型采用第二个参数。第一个参数是由单个Telnet字符表示，就像第二个字符一样ASCII和EBCDIC的格式参数；第二个参数对于本地字节是一个表示字节大小的十进制整数。参数由&lt;SP&gt;（空间，ASCII代码）分隔32）。为类型分配了以下代码：\ /A - ASCII | | N - 非打印|-&gt;&lt;-| T - Telnet格式效果器E - EBCDIC| | C - 马车控制（ASA）/ \I - 图像L &lt;字节大小&gt; - 本地字节大小<span class="grey">Postel &amp; Reynolds [第28页]</span></pre>
        <hr class="noprint"><!--NewPage-->
        <pre
            class="newpage"><span id="page-29"></span>
    <span class="grey"><a href="/doc/html/rfc959">RFC 959 </a>1985年10月</span>文件传输协议文件传输协议默认表示类型是ASCII Non-print。如果格式参数已更改，稍后仅更改第一个参数被更改，格式然后返回到非打印默认。文件结构（STRU）参数是单个Telnet字符代码，指定数据部分中描述的文件结构代表和存储。为结构分配了以下代码：F - 文件（无记录结构）R - 记录结构P - 页面结构默认结构是文件。传输模式（模式）参数是单个Telnet字符代码，指定章节中描述的数据传输模式传输模式。为传输模式分配了以下代码：S - 流B - 区块C - 压缩默认传输模式是Stream。4.1.3.FTP服务命令FTP服务命令定义文件传输或文件用户请求的系统功能。FTP的论点服务命令通常是一个路径名。的语法路径名必须符合服务器站点约定（与标准默认值适用），以及语言惯例控制连接。建议的默认处理是使用最后指定的设备、目录或文件名，或为本地用户定义的标准默认值。命令可能是以任何顺序，除了“rename from”命令必须是后跟“重命名为”命令，重新启动命令必须紧随其后的是中断服务命令（例如，STOR或RETR）。数据，当响应FTP服务传输时默认表示类型是ASCII Non-print。如果格式参数已更改，稍后仅更改第一个参数被更改，格式然后返回到非打印默认。文件结构（STRU）参数是单个Telnet字符代码，指定数据部分中描述的文件结构代表和存储。为结构分配了以下代码：F - 文件（无记录结构）R - 记录结构P - 页面结构默认结构是文件。传输模式（模式）参数是单个Telnet字符代码，指定章节中描述的数据传输模式传输模式。为传输模式分配了以下代码：S - 流B - 区块C - 压缩默认传输模式是Stream。4.1.3.FTP服务命令FTP服务命令定义文件传输或文件用户请求的系统功能。FTP的论点服务命令通常是一个路径名。的语法路径名必须符合服务器站点约定（与标准默认值适用），以及语言惯例控制连接。建议的默认处理是使用最后指定的设备、目录或文件名，或为本地用户定义的标准默认值。命令可能是以任何顺序，除了“rename from”命令必须是后跟“重命名为”命令，重新启动命令必须紧随其后的是中断服务命令（例如，STOR或RETR）。数据，当响应FTP服务传输时<span class="grey">Postel &amp; Reynolds [第29页]</span></pre>
        <hr class="noprint"><!--NewPage-->
        <pre
            class="newpage"><span id="page-30"></span>
    <span class="grey"><a href="/doc/html/rfc959">RFC 959 </a>1985年10月</span>文件传输协议文件传输协议命令，应始终通过数据连接发送，除了对于某些内容丰富的回复。以下命令指定FTP服务请求：检索（RETR）此命令导致服务器-DTP传输副本文件，在路径名中指定，到服务器或用户DTP在数据连接的另一端。状态和服务器站点的文件内容不受影响。商店（商店）此命令导致服务器-DTP接受数据通过数据连接传输，并将数据存储为服务器站点上的文件。如果文件在路径名存在于服务器站点，那么其内容应被正在传输的数据所取代。一个新文件是在服务器站点创建，如果文件中指定了文件路径名尚不存在。商店独特（STOU）此命令的行为类似于STOR，只是结果文件将在当前目录中以名称创建该目录独有。250转移开始响应必须包括生成的名称。附录（带创建）（APPE）此命令导致服务器-DTP接受数据通过数据连接传输并将数据存储在服务器站点上的文件。如果文件在路径名存在于服务器站点，然后数据应为附加到该文件；否则在路径名应在服务器站点创建。分配（ALLO）一些服务器可能需要此命令来保留足够的存储空间来容纳新文件转移。参数应为十进制整数表示字节数（使用逻辑字节大小）为文件保留的存储空间。对于文件与记录或页面结构一起发送最大记录或页面大小（以逻辑字节为单位）可能也是必要的；这是由第二个参数字段中的十进制整数表示命令，应始终通过数据连接发送，除了对于某些内容丰富的回复。以下命令指定FTP服务请求：检索（RETR）此命令导致服务器-DTP传输副本文件，在路径名中指定，到服务器或用户DTP在数据连接的另一端。状态和服务器站点的文件内容不受影响。商店（商店）此命令导致服务器-DTP接受数据通过数据连接传输，并将数据存储为服务器站点上的文件。如果文件在路径名存在于服务器站点，那么其内容应被正在传输的数据所取代。一个新文件是在服务器站点创建，如果文件中指定了文件路径名尚不存在。商店独特（STOU）此命令的行为类似于STOR，只是结果文件将在当前目录中以名称创建该目录独有。250转移开始响应必须包括生成的名称。附录（带创建）（APPE）此命令导致服务器-DTP接受数据通过数据连接传输并将数据存储在服务器站点上的文件。如果文件在路径名存在于服务器站点，然后数据应为附加到该文件；否则在路径名应在服务器站点创建。分配（ALLO）一些服务器可能需要此命令来保留足够的存储空间来容纳新文件转移。参数应为十进制整数表示字节数（使用逻辑字节大小）为文件保留的存储空间。对于文件与记录或页面结构一起发送最大记录或页面大小（以逻辑字节为单位）可能也是必要的；这是由第二个参数字段中的十进制整数表示<span class="grey">Postel &amp; Reynolds [第 30 页]</span></pre>
        <hr class="noprint"><!--NewPage-->
        <pre
            class="newpage"><span id="page-31"></span>
    <span class="grey"><a href="/doc/html/rfc959">RFC 959 </a>1985年10月</span>文件传输协议文件传输协议命令。第二个论点是可选的，但当礼物应该与第一个被三个分开Telnet字符&lt;SP&gt; R &lt;SP&gt;。这个命令应该是然后是STORe或APPEnd命令。ALLO命令这些服务器应将其视为NOOP（无操作）这不需要文件的最大大小是事先声明，那些只感兴趣的服务器最大记录或页面大小应接受虚拟值在第一个论点中，忽略它。重新启动（休息）参数字段表示服务器标记，其中文件传输将重新启动。这个命令没有导致文件传输，但将文件跳转到指定数据检查点。应立即遵循此命令通过适当的FTP服务命令，该命令将导致文件传输到恢复。重命名自（RNFR）此命令指定文件的旧路径名，该路径名是将被重命名。此命令必须立即紧随其后指定新文件路径名的“重命名为”命令。重命名为（RNTO）此命令指定文件的新路径名在最前面的“rename from”中指定命令。这两个命令一起导致一个文件重命名。中止（ABOR）此命令告诉服务器中止之前的FTP服务命令和任何相关的数据传输。这个中止命令可能需要“特殊操作”，如FTP命令部分，强制识别服务器。如果之前的命令，则不采取任何行动已完成（包括数据传输）。控制服务器不会关闭连接，而是数据连接必须关闭。收到这个后，服务器有两个案例命令：（1）FTP服务命令已经完成，或（2）FTP服务命令仍在进行中。命令。第二个论点是可选的，但当礼物应该与第一个被三个分开Telnet字符&lt;SP&gt; R &lt;SP&gt;。这个命令应该是然后是STORe或APPEnd命令。ALLO命令这些服务器应将其视为NOOP（无操作）这不需要文件的最大大小是事先声明，那些只感兴趣的服务器最大记录或页面大小应接受虚拟值在第一个论点中，忽略它。重新启动（休息）参数字段表示服务器标记，其中文件传输将重新启动。这个命令没有导致文件传输，但将文件跳转到指定数据检查点。应立即遵循此命令通过适当的FTP服务命令，该命令将导致文件传输到恢复。重命名自（RNFR）此命令指定文件的旧路径名，该路径名是将被重命名。此命令必须立即紧随其后指定新文件路径名的“重命名为”命令。重命名为（RNTO）此命令指定文件的新路径名在最前面的“rename from”中指定命令。这两个命令一起导致一个文件重命名。中止（ABOR）此命令告诉服务器中止之前的FTP服务命令和任何相关的数据传输。这个中止命令可能需要“特殊操作”，如FTP命令部分，强制识别服务器。如果之前的命令，则不采取任何行动已完成（包括数据传输）。控制服务器不会关闭连接，而是数据连接必须关闭。收到这个后，服务器有两个案例命令：（1）FTP服务命令已经完成，或（2）FTP服务命令仍在进行中。<span class="grey">Postel &amp; Reynolds [第31页]</span></pre>
        <hr class="noprint"><!--NewPage-->
        <pre
            class="newpage"><span id="page-32"></span>
    <span class="grey"><a href="/doc/html/rfc959">RFC 959 </a>1985年10月</span>文件传输协议文件传输协议在第一例中，服务器关闭数据连接（如果它是打开的）并回复226个回复，表明中止命令已成功处理。在第二种情况下，服务器中止了FTP服务进度并关闭数据连接，返回426回复表明服务请求终止异常。然后，服务器发送226个回复，表明中止命令已成功处理。删除（DELE）此命令使路径名中指定的文件在服务器站点上删除。如果有额外的保护水平是想要的（例如查询，“你真的希望吗删除？”），它应该由用户-FTP进程提供。删除目录（RMD）此命令导致路径名中指定的目录作为目录删除（如果路径名是绝对的）或作为当前工作目录的子目录（如果路径名是相对的）。见附录二。制作目录（MKD）此命令导致路径名中指定的目录创建为目录（如果路径名是绝对的）或作为当前工作目录的子目录（如果路径名是相对的）。见附录二。打印工作目录（PWD）此命令导致当前工作的名称将在回复中返回的目录。见附录二。列表（列表）此命令会导致列表从服务器发送到被动DTP。如果路径名指定了目录或其他一组文件，服务器应该传输一个文件列表在指定的目录中。如果路径名指定了一个文件，然后服务器应该发送当前信息文件。空参数意味着用户当前的工作或默认目录。数据传输是在数据上ASCII类型或EBCDIC类型的连接。（用户必须在第一例中，服务器关闭数据连接（如果它是打开的）并回复226个回复，表明中止命令已成功处理。在第二种情况下，服务器中止了FTP服务进度并关闭数据连接，返回426回复表明服务请求终止异常。然后，服务器发送226个回复，表明中止命令已成功处理。删除（DELE）此命令使路径名中指定的文件在服务器站点上删除。如果有额外的保护水平是想要的（例如查询，“你真的希望吗删除？”），它应该由用户-FTP进程提供。删除目录（RMD）此命令导致路径名中指定的目录作为目录删除（如果路径名是绝对的）或作为当前工作目录的子目录（如果路径名是相对的）。见<a href="#appendix-I">附录二</a>。制作目录（MKD）此命令导致路径名中指定的目录创建为目录（如果路径名是绝对的）或作为当前工作目录的子目录（如果路径名是相对的）。见<a href="#appendix-I">附录二</a>。打印工作目录（PWD）此命令导致当前工作的名称将在回复中返回的目录。见<a href="#appendix-I">附录二</a>。列表（列表）此命令会导致列表从服务器发送到被动DTP。如果路径名指定了目录或其他一组文件，服务器应该传输一个文件列表在指定的目录中。如果路径名指定了一个文件，然后服务器应该发送当前信息文件。空参数意味着用户当前的工作或默认目录。数据传输是在数据上ASCII类型或EBCDIC类型的连接。（用户必须<span class="grey">Postel &amp; Reynolds [第32页]</span></pre>
        <hr class="noprint"><!--NewPage-->
        <pre
            class="newpage"><span id="page-33"></span>
    <span class="grey"><a href="/doc/html/rfc959">RFC 959 </a>1985年10月</span>文件传输协议文件传输协议确保类型是适当的ASCII或EBCDIC）。由于文件上的信息可能与系统有很大不同对于系统来说，此信息可能很难自动使用在程序中，但对人类用户可能非常有用。名称列表（NLST）此命令会导致从中发送目录列表服务器到用户站点。路径名应指定一个目录或其他特定于系统的文件组描述符；a空参数意味着当前目录。服务器将返回文件名称流，而不是其他信息。数据将以ASCII或数据连接上的EBCDIC类型作为有效路径名由&lt;CRLF&gt;或&lt;NL&gt;分隔的字符串。（用户必须再次确保类型正确。）此命令旨在返回程序可以使用的信息进一步自动处理文件。例如，在“多重获取”函数的实现。站点参数（站点）服务器使用此命令来提供服务特定于他的系统，对文件传输至关重要但不够普遍，不能作为命令包含在协议。这些服务的性质和他们的语法规范可以在回复中说明帮助站点命令。系统（系统）此命令用于查找操作类型服务器上的系统。答复应作为其第一个单词当前版本中列出的系统名称之一分配号码文档[4]。状态（STAT）此命令将导致发送状态响应回复形式的控制连接。命令可以在文件传输期间发送（与Telnet IP一起）和同步信号--请参阅关于FTP命令的部分）其中服务器将响应状态操作正在进行中，或者可以在文件之间发送转移。在后一种情况下，命令可能有一个参数字段。如果参数是路径名，则命令类似于“列表”命令，但数据应为确保类型是适当的ASCII或EBCDIC）。由于文件上的信息可能与系统有很大不同对于系统来说，此信息可能很难自动使用在程序中，但对人类用户可能非常有用。名称列表（NLST）此命令会导致从中发送目录列表服务器到用户站点。路径名应指定一个目录或其他特定于系统的文件组描述符；a空参数意味着当前目录。服务器将返回文件名称流，而不是其他信息。数据将以ASCII或数据连接上的EBCDIC类型作为有效路径名由&lt;CRLF&gt;或&lt;NL&gt;分隔的字符串。（用户必须再次确保类型正确。）此命令旨在返回程序可以使用的信息进一步自动处理文件。例如，在“多重获取”函数的实现。站点参数（站点）服务器使用此命令来提供服务特定于他的系统，对文件传输至关重要但不够普遍，不能作为命令包含在协议。这些服务的性质和他们的语法规范可以在回复中说明帮助站点命令。系统（系统）此命令用于查找操作类型服务器上的系统。答复应作为其第一个单词当前版本中列出的系统名称之一分配号码文档[4]。状态（STAT）此命令将导致发送状态响应回复形式的控制连接。命令可以在文件传输期间发送（与Telnet IP一起）和同步信号--请参阅关于FTP命令的部分）其中服务器将响应状态操作正在进行中，或者可以在文件之间发送转移。在后一种情况下，命令可能有一个参数字段。如果参数是路径名，则命令类似于“列表”命令，但数据应为<span class="grey">Postel &amp; Reynolds [第33页]</span></pre>
        <hr class="noprint"><!--NewPage-->
        <pre
            class="newpage"><span id="page-34"></span>
    <span class="grey"><a href="/doc/html/rfc959">RFC 959 </a>1985年10月</span>文件传输协议文件传输协议通过控制连接传输。如果一个部分给定路径名，服务器可能会响应一个列表与该规范相关的文件名或属性。如果没有给出参数，服务器应返回一般关于服务器FTP进程的状态信息。这个应包括所有传输参数的当前值和连接的状态。帮助（帮助）此命令将导致服务器发送有帮助的有关其实施状态的信息控制与用户的连接。该命令可能需要一个参数（例如，任何命令名称）并返回更具体的信息作为回应。回复类型为211或214。建议在进入用户之前允许帮助命令。服务器可以使用此回复来指定站点相关参数，例如，响应帮助站点。NOOP（NOOP）此命令不影响任何参数或之前输入命令。它没有指定任何行动，除了服务器发送一个OK回复。文件传输协议遵循Telnet的规范通过控制连接进行所有通信的协议。自从用于Telnet通信的语言可能是协商的选项，接下来两节中的所有引用都将是“Telnet语言”和相应的“Telnet行终代码”。目前，人们可能会将这些表示为NVT-ASCII和&lt;CRLF&gt;。没有其他将引用Telnet协议的规范。FTP命令是“Telnet字符串”，由“Telnet端”终止行代码”。命令代码本身是字母字符由字符&lt;SP&gt;（空格）终止，如果参数跟随和Telnet-EOL 否则。命令代码和语义本节描述了命令；详细的语法命令在命令部分中指定，回复序列在命令和回复的排序部分中讨论，说明命令使用情况的场景在关于典型FTP场景的部分。FTP命令可以分区为指定访问控制的命令标识符、数据传输参数或FTP服务请求。某些命令（如ABOR、STAT、QUIT）可以通过在数据传输过程中控制连接。一些通过控制连接传输。如果一个部分给定路径名，服务器可能会响应一个列表与该规范相关的文件名或属性。如果没有给出参数，服务器应返回一般关于服务器FTP进程的状态信息。这个应包括所有传输参数的当前值和连接的状态。帮助（帮助）此命令将导致服务器发送有帮助的有关其实施状态的信息控制与用户的连接。该命令可能需要一个参数（例如，任何命令名称）并返回更具体的信息作为回应。回复类型为211或214。建议在进入用户之前允许帮助命令。服务器可以使用此回复来指定站点相关参数，例如，响应帮助站点。NOOP（NOOP）此命令不影响任何参数或之前输入命令。它没有指定任何行动，除了服务器发送一个OK回复。文件传输协议遵循Telnet的规范通过控制连接进行所有通信的协议。自从用于Telnet通信的语言可能是协商的选项，接下来两节中的所有引用都将是“Telnet语言”和相应的“Telnet行终代码”。目前，人们可能会将这些表示为NVT-ASCII和&lt;CRLF&gt;。没有其他将引用Telnet协议的规范。FTP命令是“Telnet字符串”，由“Telnet端”终止行代码”。命令代码本身是字母字符由字符&lt;SP&gt;（空格）终止，如果参数跟随和Telnet-EOL 否则。命令代码和语义本节描述了命令；详细的语法命令在命令部分中指定，回复序列在命令和回复的排序部分中讨论，说明命令使用情况的场景在关于典型FTP场景的部分。FTP命令可以分区为指定访问控制的命令标识符、数据传输参数或FTP服务请求。某些命令（如ABOR、STAT、QUIT）可以通过在数据传输过程中控制连接。一些<span class="grey">Postel &amp; Reynolds [第34页]</span></pre>
        <hr class="noprint"><!--NewPage-->
        <pre
            class="newpage"><span id="page-35"></span>
    <span class="grey"><a href="/doc/html/rfc959">RFC 959 </a>1985年10月</span>文件传输协议文件传输协议服务器可能无法监控控制和数据连接同时，在这种情况下，需要采取一些特别行动引起服务器的注意。以下有序格式是暂定推荐：1.用户系统插入Telnet“中断进程”（IP）信号在Telnet流中。2.用户系统发送Telnet“同步”信号。3.用户系统在Telnet中插入命令（例如ABOR）流。4.服务器PI在收到“IP”后，扫描Telnet流以获取正好一个FTP命令。（对于其他服务器，这可能没有必要，但列出的操作以上应该没有不寻常的效果。）4.2.FTP回复对文件传输协议命令的回复是设计的，以确保文件过程中请求和操作的同步转移，并保证用户进程始终知道服务器的状态。每个命令必须至少生成一个回复，尽管可能有不止一个；在后一种情况下，多个回复必须易于区分。此外，一些命令以顺序组形式出现，例如USER、PASS和ACCT，或RNFR和RNTO。回复表明存在一个如果之前的所有命令都成功，则处于中间状态。序列中任何一点的失败都需要重复从一开始就是整个序列。命令-reply序列的细节在下面一组状态图。FTP回复由三位数字组成（传输为三个字母数字字符）后跟一些文本。号码旨在由自动机使用，以确定进入哪种状态接下来；文本是为人类用户准备的。它的意图是这三个数字包含足够的编码信息，以至于用户进程（User-PI）不需要检查文本和可以酌情丢弃它或将其传递给用户。特别是，文本可能依赖于服务器，所以有每个回复代码的文本可能各不相同。回复被定义为包含3位数的代码，后跟空格服务器可能无法监控控制和数据连接同时，在这种情况下，需要采取一些特别行动引起服务器的注意。以下有序格式是暂定推荐：1.用户系统插入Telnet“中断进程”（IP）信号在Telnet流中。2.用户系统发送Telnet“同步”信号。3.用户系统在Telnet中插入命令（例如ABOR）流。4.服务器PI在收到“IP”后，扫描Telnet流以获取正好一个FTP命令。（对于其他服务器，这可能没有必要，但列出的操作以上应该没有不寻常的效果。）4.2.FTP回复对文件传输协议命令的回复是设计的，以确保文件过程中请求和操作的同步转移，并保证用户进程始终知道服务器的状态。每个命令必须至少生成一个回复，尽管可能有不止一个；在后一种情况下，多个回复必须易于区分。此外，一些命令以顺序组形式出现，例如USER、PASS和ACCT，或RNFR和RNTO。回复表明存在一个如果之前的所有命令都成功，则处于中间状态。序列中任何一点的失败都需要重复从一开始就是整个序列。命令-reply序列的细节在下面一组状态图。FTP回复由三位数字组成（传输为三个字母数字字符）后跟一些文本。号码旨在由自动机使用，以确定进入哪种状态接下来；文本是为人类用户准备的。它的意图是这三个数字包含足够的编码信息，以至于用户进程（User-PI）不需要检查文本和可以酌情丢弃它或将其传递给用户。特别是，文本可能依赖于服务器，所以有每个回复代码的文本可能各不相同。回复被定义为包含3位数的代码，后跟空格<span class="grey">Postel &amp; Reynolds [第35页]</span></pre>
        <hr class="noprint"><!--NewPage-->
        <pre
            class="newpage"><span id="page-36"></span>
    <span class="grey"><a href="/doc/html/rfc959">RFC 959 </a>1985年10月</span>文件传输协议文件传输协议&lt;SP&gt;，后跟一行文本（其中一些最大行长已指定），并由Telnet线路结束终止代码。然而，在某些情况下，文本长度超过一条线。在这些情况下，必须将完整文本放在括号内因此，用户进程知道它何时可能会停止阅读回复（即停止处理控制连接上的输入）并去做其他事情。这需要在第一行上采用特殊格式来表明不止一行正在来，另一行在最后一行将其指定为最后一行。其中至少有一个必须包含适当的回复代码来指示状态交易。为了满足所有派别，决定两者都第一行和最后一行代码应该是相同的。因此，多行回复的格式是第一行将以确切的所需回复代码开始，然后立即用连字符“-”（也称为减号），然后是文本。最后一行将以相同的代码开头，然后立即通过空间&lt;SP&gt;，可选一些文本，和Telnet行尾代码。例如：123-第一行第二行234 以数字开头的一行123 最后一行然后，用户进程只需搜索第二个出现相同的回复代码，然后是&lt;SP&gt;（空间），在一行的开头，忽略所有中间线。如果中间线以3位数字开头，服务器必须垫在前面，以避免混淆。此方案允许使用标准系统例程回复信息（例如STAT回复），与钉上“人工”的第一行和最后一行。在极少数情况下在这些例程中，这些例程能够生成三位数字和任何一行开头的空格，每行的开头文本行应该被一些中性文本所抵消，如空格。此方案假设多行回复可能不会嵌套。回复的三位数字都具有特殊意义。这旨在允许从非常简单到非常用户流程的复杂响应。第一个数字表示响应是好、坏还是不完整。（参考状态图），一个不复杂的用户流程将能够确定其下一步行动（按计划进行，&lt;SP&gt;，后跟一行文本（其中一些最大行长已指定），并由Telnet线路结束终止代码。然而，在某些情况下，文本长度超过一条线。在这些情况下，必须将完整文本放在括号内因此，用户进程知道它何时可能会停止阅读回复（即停止处理控制连接上的输入）并去做其他事情。这需要在第一行上采用特殊格式来表明不止一行正在来，另一行在最后一行将其指定为最后一行。其中至少有一个必须包含适当的回复代码来指示状态交易。为了满足所有派别，决定两者都第一行和最后一行代码应该是相同的。因此，多行回复的格式是第一行将以确切的所需回复代码开始，然后立即用连字符“-”（也称为减号），然后是文本。最后一行将以相同的代码开头，然后立即通过空间&lt;SP&gt;，可选一些文本，和Telnet行尾代码。例如：123-第一行第二行234 以数字开头的一行123 最后一行然后，用户进程只需搜索第二个出现相同的回复代码，然后是&lt;SP&gt;（空间），在一行的开头，忽略所有中间线。如果中间线以3位数字开头，服务器必须垫在前面，以避免混淆。此方案允许使用标准系统例程回复信息（例如STAT回复），与钉上“人工”的第一行和最后一行。在极少数情况下在这些例程中，这些例程能够生成三位数字和任何一行开头的空格，每行的开头文本行应该被一些中性文本所抵消，如空格。此方案假设多行回复可能不会嵌套。回复的三位数字都具有特殊意义。这旨在允许从非常简单到非常用户流程的复杂响应。第一个数字表示响应是好、坏还是不完整。（参考状态图），一个不复杂的用户流程将能够确定其下一步行动（按计划进行，<span class="grey">Postel &amp; Reynolds [第36页]</span></pre>
        <hr class="noprint"><!--NewPage-->
        <pre
            class="newpage"><span id="page-37"></span>
    <span class="grey"><a href="/doc/html/rfc959">RFC 959 </a>1985年10月</span>文件传输协议文件传输协议重做、缩水等）只需检查第一个数字即可。罗马字母的第一个字母想知道大致哪种错误的用户进程发生（例如文件系统错误，命令语法错误）可能检查第二位数字，保留第三位数字作为最好的信息的分级（例如，没有先前的RNTO命令RNFR）。回复代码的第一个数字有五个值：1yz 正面 初步回复请求的行动正在启动中；期待另一个在继续执行新命令之前回复。（该用户进程在...之前发送另一个命令完成回复将违反协议；但是服务器-FTP进程应该将任何命令排队在前面的命令进行中时到达。）这个回复类型可用于指示命令已被接受，用户流程现在可以注意了到数据连接，用于实现同时监控是困难的。服务器-FTP进程最多可以发送一个1yz的回复，每个命令。2yz 正面完成回复请求的操作已成功完成。罗马字母的第一个字母可能会发起新的请求。3yz 积极中间回复命令已被接受，但请求的操作被搁置，等待进一步接收信息。用户应该发送另一个命令指定此信息。此回复用于命令序列组。4yz瞬态负完成回复该命令未被接受，请求的操作确实被接受了没有发生，但错误条件是暂时的，并且可能会再次要求采取行动。用户应该返回命令序列的开头（如果有的话）。很难为“短暂”赋予意义，特别是当两个不同的站点（服务器和用户进程）必须就解释达成一致。4yz类别中的每个回复可能略有不同的时间价值，但意图是重做、缩水等）只需检查第一个数字即可。罗马字母的第一个字母想知道大致哪种错误的用户进程发生（例如文件系统错误，命令语法错误）可能检查第二位数字，保留第三位数字作为最好的信息的分级（例如，没有先前的RNTO命令RNFR）。回复代码的第一个数字有五个值：1yz 正面 初步回复请求的行动正在启动中；期待另一个在继续执行新命令之前回复。（该用户进程在...之前发送另一个命令完成回复将违反协议；但是服务器-FTP进程应该将任何命令排队在前面的命令进行中时到达。）这个回复类型可用于指示命令已被接受，用户流程现在可以注意了到数据连接，用于实现同时监控是困难的。服务器-FTP进程最多可以发送一个1yz的回复，每个命令。2yz 正面完成回复请求的操作已成功完成。罗马字母的第一个字母可能会发起新的请求。3yz 积极中间回复命令已被接受，但请求的操作被搁置，等待进一步接收信息。用户应该发送另一个命令指定此信息。此回复用于命令序列组。4yz瞬态负完成回复该命令未被接受，请求的操作确实被接受了没有发生，但错误条件是暂时的，并且可能会再次要求采取行动。用户应该返回命令序列的开头（如果有的话）。很难为“短暂”赋予意义，特别是当两个不同的站点（服务器和用户进程）必须就解释达成一致。4yz类别中的每个回复可能略有不同的时间价值，但意图是<span class="grey">Postel &amp; Reynolds [第37页]</span></pre>
        <hr class="noprint"><!--NewPage-->
        <pre
            class="newpage"><span id="page-38"></span>
    <span class="grey"><a href="/doc/html/rfc959">RFC 959 </a>1985年10月</span>文件传输协议文件传输协议鼓励用户进程再试一次。经验法则确定回复是否适合4yz还是5yz（永久否定）类别是回复是4yz，如果命令可以重复，而无需任何更改命令形式或用户或服务器的属性（例如，命令的拼写相同使用的参数；用户不会更改其文件访问权限或用户名；服务器不会设置新的实施。）5yz永久否定完成回复该命令未被接受，请求的操作确实被接受了没有发生。不鼓励用户进程重复确切的请求（以相同的顺序）。甚至一些“永久”错误条件可以纠正，所以人类用户可能想要将他的用户流程引导到通过一些直接操作重新启动命令序列未来的点（例如，在拼写之后更改了，或者用户更改了他的目录状态。）以下函数分组在第二个中编码数字：x0z语法-这些回复指的是语法错误，语法上纠正不适合任何命令功能类别，未实现或多余命令。x1z信息-这些是对请求的回复信息，如状态或帮助。x2z连接-涉及控件的回复和数据连接。x3z身份验证和会计-登录回复流程和会计程序。x4z 尚未指定。x5z文件系统-这些回复表明了状态服务器文件系统相对于请求的传输或其他文件系统操作。第三个数字给出了每个含义的更精细的层次函数类别，由第二位数字指定。这个下面的回复列表将说明这一点。请注意，文本鼓励用户进程再试一次。经验法则确定回复是否适合4yz还是5yz（永久否定）类别是回复是4yz，如果命令可以重复，而无需任何更改命令形式或用户或服务器的属性（例如，命令的拼写相同使用的参数；用户不会更改其文件访问权限或用户名；服务器不会设置新的实施。）5yz永久否定完成回复该命令未被接受，请求的操作确实被接受了没有发生。不鼓励用户进程重复确切的请求（以相同的顺序）。甚至一些“永久”错误条件可以纠正，所以人类用户可能想要将他的用户流程引导到通过一些直接操作重新启动命令序列未来的点（例如，在拼写之后更改了，或者用户更改了他的目录状态。）以下函数分组在第二个中编码数字：x0z语法-这些回复指的是语法错误，语法上纠正不适合任何命令功能类别，未实现或多余命令。x1z信息-这些是对请求的回复信息，如状态或帮助。x2z连接-涉及控件的回复和数据连接。x3z身份验证和会计-登录回复流程和会计程序。x4z 尚未指定。x5z文件系统-这些回复表明了状态服务器文件系统相对于请求的传输或其他文件系统操作。第三个数字给出了每个含义的更精细的层次函数类别，由第二位数字指定。这个下面的回复列表将说明这一点。请注意，文本<span class="grey">Postel &amp; Reynolds [第38页]</span></pre>
        <hr class="noprint"><!--NewPage-->
        <pre
            class="newpage"><span id="page-39"></span>
    <span class="grey"><a href="/doc/html/rfc959">RFC 959 </a>1985年10月</span>文件传输协议文件传输协议建议与每个回复相关联，而不是强制性的，甚至可能根据命令进行更改它与之相关联。另一方面，回复代码，必须严格遵循最后一节的规范；也就是说，服务器实现不应该发明新的代码与那些情况略有不同这里描述的，但应该适应已经定义的代码。成功执行的TYPE或ALLO等命令不向用户提供任何新信息将导致返回200个回复。如果命令不是由特定的服务器-FTP进程实现，因为它与该计算机系统无关，例如ALLO在TOPS20网站上，积极的完成回复仍然期望，以便简单的用户流程知道它可以继续进行及其行动方案。在这种情况下，使用了202个回复例如，回复文本：“没有存储分配有必要。”另一方面，如果命令请求一个非特定于站点的操作，并且未实施，响应是502。一个改进是命令的504回复已经实施，但要求未实现参数。4.2.1 按功能组分类的回复代码200命令，好的。500 语法错误，命令无法识别。这可能包括命令行太长等错误。参数或参数中的501语法错误。202命令未实施，在此站点是多余的。502命令未执行。503 命令顺序错误。504命令未针对该参数实现。建议与每个回复相关联，而不是强制性的，甚至可能根据命令进行更改它与之相关联。另一方面，回复代码，必须严格遵循最后一节的规范；也就是说，服务器实现不应该发明新的代码与那些情况略有不同这里描述的，但应该适应已经定义的代码。成功执行的TYPE或ALLO等命令不向用户提供任何新信息将导致返回200个回复。如果命令不是由特定的服务器-FTP进程实现，因为它与该计算机系统无关，例如ALLO在TOPS20网站上，积极的完成回复仍然期望，以便简单的用户流程知道它可以继续进行及其行动方案。在这种情况下，使用了202个回复例如，回复文本：“没有存储分配有必要。”另一方面，如果命令请求一个非特定于站点的操作，并且未实施，响应是502。一个改进是命令的504回复已经实施，但要求未实现参数。4.2.1 按功能组分类的回复代码200命令，好的。500 语法错误，命令无法识别。这可能包括命令行太长等错误。参数或参数中的501语法错误。202命令未实施，在此站点是多余的。502命令未执行。503 命令顺序错误。504命令未针对该参数实现。<span class="grey">Postel &amp; Reynolds [第39页]</span></pre>
        <hr class="noprint"><!--NewPage-->
        <pre
            class="newpage"><span id="page-40"></span>
    <span class="grey"><a href="/doc/html/rfc959">RFC 959 </a>1985年10月</span>文件传输协议文件传输协议110 重新启动标记回复。在这种情况下，文本是准确的，而不是留给特定实施；它必须阅读：标记 yyyy = mmmm其中yyyy是用户处理数据流标记，和mmmm服务器的等效标记（注意标记之间的空格和 "=")。211系统状态，或系统帮助回复。212目录状态。213 文件状态。214 帮助消息。关于如何使用服务器或特定内容的含义非标准命令。这个回复只对人类用户。215 NAME系统类型。其中NAME是列表中的官方系统名称分配的号码文档。120 服务在nnn分钟内准备就绪。220 服务为新用户做好准备。221服务关闭控制连接。酌情注销。421 服务不可用，关闭控制连接。如果服务知道，这可能是对任何命令的回复必须关闭。125 数据连接已打开；传输开始。225 数据连接开放；未进行传输。425 无法打开数据连接。226 关闭数据连接。请求的文件操作成功（例如，文件传输或文件中止）。426 连接关闭；传输中止。227进入被动模式（h1，h2，h3，h4，p1，p2）。230 用户登录，继续。530 未登录。331 用户名可以，需要密码。332 需要帐户才能登录。532 需要存储文件的帐户。110 重新启动标记回复。在这种情况下，文本是准确的，而不是留给特定实施；它必须阅读：标记 yyyy = mmmm其中yyyy是用户处理数据流标记，和mmmm服务器的等效标记（注意标记之间的空格和 "=")。211系统状态，或系统帮助回复。212目录状态。213 文件状态。214 帮助消息。关于如何使用服务器或特定内容的含义非标准命令。这个回复只对人类用户。215 NAME系统类型。其中NAME是列表中的官方系统名称分配的号码文档。120 服务在nnn分钟内准备就绪。220 服务为新用户做好准备。221服务关闭控制连接。酌情注销。421 服务不可用，关闭控制连接。如果服务知道，这可能是对任何命令的回复必须关闭。125 数据连接已打开；传输开始。225 数据连接开放；未进行传输。425 无法打开数据连接。226 关闭数据连接。请求的文件操作成功（例如，文件传输或文件中止）。426 连接关闭；传输中止。227进入被动模式（h1，h2，h3，h4，p1，p2）。230 用户登录，继续。530 未登录。331 用户名可以，需要密码。332 需要帐户才能登录。532 需要存储文件的帐户。<span class="grey">Postel &amp; Reynolds [第40页]</span></pre>
        <hr class="noprint"><!--NewPage-->
        <pre
            class="newpage"><span id="page-41"></span>
    <span class="grey"><a href="/doc/html/rfc959">RFC 959 </a>1985年10月</span>文件传输协议文件传输协议150 文件状态可以；即将打开数据连接。250 请求的文件操作，可以，已完成。创建了257“PATHNAME”。350 请求文件操作，等待进一步信息。450 请求的文件操作未采取。文件不可用（例如，文件繁忙）。550 请求未采取的行动。文件不可用（例如，未找到文件，无法访问）。451 请求的行动被中止。处理中的本地错误。551 请求的行动中止。页面类型未知。452 请求的行动未采取。系统中存储空间不足。552 请求的文件操作被中止。超过存储分配（对于当前目录或数据集）。553 请求未采取行动。不允许文件名。4.2.2 回复代码的数字顺序列表110 重新启动标记回复。在这种情况下，文本是准确的，而不是留给特定实施；它必须阅读：标记 yyyy = mmmm其中yyyy是用户处理数据流标记，和mmmm服务器的等效标记（注意标记之间的空格和 "=")。120 服务在nnn分钟内准备就绪。125 数据连接已打开；传输开始。150 文件状态可以；即将打开数据连接。150 文件状态可以；即将打开数据连接。250 请求的文件操作，可以，已完成。创建了257“PATHNAME”。350 请求文件操作，等待进一步信息。450 请求的文件操作未采取。文件不可用（例如，文件繁忙）。550 请求未采取的行动。文件不可用（例如，未找到文件，无法访问）。451 请求的行动被中止。处理中的本地错误。551 请求的行动中止。页面类型未知。452 请求的行动未采取。系统中存储空间不足。552 请求的文件操作被中止。超过存储分配（对于当前目录或数据集）。553 请求未采取行动。不允许文件名。4.2.2 回复代码的数字顺序列表110 重新启动标记回复。在这种情况下，文本是准确的，而不是留给特定实施；它必须阅读：标记 yyyy = mmmm其中yyyy是用户处理数据流标记，和mmmm服务器的等效标记（注意标记之间的空格和 "=")。120 服务在nnn分钟内准备就绪。125 数据连接已打开；传输开始。150 文件状态可以；即将打开数据连接。<span class="grey">Postel &amp; Reynolds [第41页]</span></pre>
        <hr class="noprint"><!--NewPage-->
        <pre
            class="newpage"><span id="page-42"></span>
    <span class="grey"><a href="/doc/html/rfc959">RFC 959 </a>1985年10月</span>文件传输协议文件传输协议200命令，好的。202命令未实施，在此站点是多余的。211系统状态，或系统帮助回复。212目录状态。213 文件状态。214 帮助消息。关于如何使用服务器或特定内容的含义非标准命令。这个回复只对人类用户。215 NAME系统类型。其中NAME是列表中的官方系统名称分配的号码文档。220 服务为新用户做好准备。221服务关闭控制连接。酌情注销。225 数据连接开放；未进行传输。226 关闭数据连接。请求的文件操作成功（例如，文件传输或文件中止）。227进入被动模式（h1，h2，h3，h4，p1，p2）。230 用户登录，继续。250 请求的文件操作，可以，已完成。创建了257“PATHNAME”。331 用户名可以，需要密码。332 需要帐户才能登录。350 请求文件操作，等待进一步信息。421 服务不可用，关闭控制连接。如果服务知道，这可能是对任何命令的回复必须关闭。425 无法打开数据连接。426 连接关闭；传输中止。450 请求的文件操作未采取。文件不可用（例如，文件繁忙）。451请求的操作中止：处理中的本地错误。452 请求的行动未采取。系统中存储空间不足。200命令，好的。202命令未实施，在此站点是多余的。211系统状态，或系统帮助回复。212目录状态。213 文件状态。214 帮助消息。关于如何使用服务器或特定内容的含义非标准命令。这个回复只对人类用户。215 NAME系统类型。其中NAME是列表中的官方系统名称分配的号码文档。220 服务为新用户做好准备。221服务关闭控制连接。酌情注销。225 数据连接开放；未进行传输。226 关闭数据连接。请求的文件操作成功（例如，文件传输或文件中止）。227进入被动模式（h1，h2，h3，h4，p1，p2）。230 用户登录，继续。250 请求的文件操作，可以，已完成。创建了257“PATHNAME”。331 用户名可以，需要密码。332 需要帐户才能登录。350 请求文件操作，等待进一步信息。421 服务不可用，关闭控制连接。如果服务知道，这可能是对任何命令的回复必须关闭。425 无法打开数据连接。426 连接关闭；传输中止。450 请求的文件操作未采取。文件不可用（例如，文件繁忙）。451请求的操作中止：处理中的本地错误。452 请求的行动未采取。系统中存储空间不足。<span class="grey">Postel &amp; Reynolds [第42页]</span></pre>
        <hr class="noprint"><!--NewPage-->
        <pre
            class="newpage"><span id="page-43"></span>
    <span class="grey"><a href="/doc/html/rfc959">RFC 959 </a>1985年10月</span>文件传输协议文件传输协议500 语法错误，命令无法识别。这可能包括命令行太长等错误。参数或参数中的501语法错误。502命令未执行。503 命令顺序错误。504命令未针对该参数实现。530 未登录。532 需要存储文件的帐户。550 请求未采取的行动。文件不可用（例如，未找到文件，无法访问）。551请求的操作中止：页面类型未知。552 请求的文件操作被中止。超过存储分配（对于当前目录或数据集）。553 请求未采取行动。不允许文件名。500 语法错误，命令无法识别。这可能包括命令行太长等错误。参数或参数中的501语法错误。502命令未执行。503 命令顺序错误。504命令未针对该参数实现。530 未登录。532 需要存储文件的帐户。550 请求未采取的行动。文件不可用（例如，未找到文件，无法访问）。551请求的操作中止：页面类型未知。552 请求的文件操作被中止。超过存储分配（对于当前目录或数据集）。553 请求未采取行动。不允许文件名。<span class="h2" id="autoid-5"><a class="selflink" id="section-5" href="#section-5">5</a>。声明性规格</span>5.1.最低实施5.1.最低实施为了使FTP在没有不必要的错误消息的情况下可行，所有服务器都需要以下最低实现：类型-ASCII非打印模式-流结构-文件，记录命令-用户，退出，端口，类型，模式，STRU，对于默认值RETR，STOR，NOOP。传输参数的默认值是：类型-ASCII非打印模式-流STRU - 文件所有主机必须接受上述内容作为标准默认值。为了使FTP在没有不必要的错误消息的情况下可行，所有服务器都需要以下最低实现：类型-ASCII非打印模式-流结构-文件，记录命令-用户，退出，端口，类型，模式，STRU，对于默认值RETR，STOR，NOOP。传输参数的默认值是：类型-ASCII非打印模式-流STRU - 文件所有主机必须接受上述内容作为标准默认值。<span class="grey">Postel &amp; Reynolds [第43页]</span></pre>
        <hr class="noprint"><!--NewPage-->
        <pre
            class="newpage"><span id="page-44"></span>
    <span class="grey"><a href="/doc/html/rfc959">RFC 959 </a>1985年10月</span>文件传输协议文件传输协议5.2.连接服务器协议解释器应在端口L上“收听”。这个用户或用户协议解释器应启动全双工控制连接。服务器和用户进程应遵循在...中指定的Telnet协议的约定ARPA-互联网协议手册[1]。服务器在没有有义务提供命令行的编辑，并可能需要在用户主机中完成。控制连接应为在所有传输后，应用户要求由服务器关闭回复已完成。用户-DTP必须在指定的数据端口上“收听”；这可能是默认用户端口（U）或PORT命令中指定的端口。服务器应从自己的默认状态启动数据连接数据端口（L-1）使用指定的用户数据端口。方向传输和使用的端口将由FTP决定服务命令。请注意，所有FTP实现都必须支持数据传输，使用默认端口，只有USER-PI可以启动使用非默认端口。当数据在两台服务器之间传输时，A和B（请参阅到图2，用户-PI，C，设置控制连接两个服务器-PI。其中一个服务器，比如A，然后被发送一个PASV命令告诉他“听”他的数据端口，而不是当他收到传输服务命令时，启动连接。当user-PI收到对PASV命令的确认时，其中包括被监听的主机和端口的身份然后，用户-PI在PORT命令中将A的端口a发送到B；a回复已返回。然后，用户-PI可以发送相应的服务命令到A和B。服务器B启动连接和转移收益。命令-reply序列已列出在消息垂直同步的地方下面，但是水平异步：5.2.连接服务器协议解释器应在端口L上“收听”。这个用户或用户协议解释器应启动全双工控制连接。服务器和用户进程应遵循在...中指定的Telnet协议的约定ARPA-互联网协议手册[1]。服务器在没有有义务提供命令行的编辑，并可能需要在用户主机中完成。控制连接应为在所有传输后，应用户要求由服务器关闭回复已完成。用户-DTP必须在指定的数据端口上“收听”；这可能是默认用户端口（U）或PORT命令中指定的端口。服务器应从自己的默认状态启动数据连接数据端口（L-1）使用指定的用户数据端口。方向传输和使用的端口将由FTP决定服务命令。请注意，所有FTP实现都必须支持数据传输，使用默认端口，只有USER-PI可以启动使用非默认端口。当数据在两台服务器之间传输时，A和B（请参阅到图2，用户-PI，C，设置控制连接两个服务器-PI。其中一个服务器，比如A，然后被发送一个PASV命令告诉他“听”他的数据端口，而不是当他收到传输服务命令时，启动连接。当user-PI收到对PASV命令的确认时，其中包括被监听的主机和端口的身份然后，用户-PI在PORT命令中将A的端口a发送到B；a回复已返回。然后，用户-PI可以发送相应的服务命令到A和B。服务器B启动连接和转移收益。命令-reply序列已列出在消息垂直同步的地方下面，但是水平异步：<span class="grey">Postel &amp; Reynolds [第44页]</span></pre>
        <hr class="noprint"><!--NewPage-->
        <pre
            class="newpage"><span id="page-45"></span>
    <span class="grey"><a href="/doc/html/rfc959">RFC 959 </a>1985年10月</span>文件传输协议文件传输协议用户-PI-服务器A用户-PI-服务器B------------------- -----------------C-&gt;A：连接C-&gt;B：连接C-&gt;A：PASVA-&gt;C：227进入被动模式。A1，A2，A3，A4，a1，a2C-&gt;B：端口A1，A2，A3，A4，a1，a2B-&gt;C：200 好的C-&gt;A：STOR C-&gt;B：RETRB-&gt;A：连接到HOST-A，PORT-a图3数据连接应由服务器关闭建立数据一节中描述的条件连接。如果数据连接要关闭，请遵循不需要关闭连接的数据传输指示文件结束，服务器必须立即这样做。不允许等到新的传输命令之后因为用户进程已经测试了数据连接，看看它是否需要做“听”；（记住用户必须“听”关闭的数据端口，然后才能发送转移请求）。为了防止这里的竞争条件，服务器关闭数据连接后发送回复（226）（或者如果连接保持打开状态，“文件传输完成”回复（250）用户PI应该在等待其中一个回复之前发出新的传输命令）。任何时候用户或服务器看到连接是被另一方关闭，它应该立即阅读任何剩余的数据在连接上排队，并在其上发出关闭自己的一面。5.3.命令这些命令是Telnet字符串，通过控制FTP命令部分中描述的连接。命令函数和语义在本节中描述访问控制命令，传输参数命令，FTP服务命令和杂项命令。命令语法在这里指定。命令以命令代码开头，后跟一个参数领域。命令代码是四个或更少的字母字符。处理大写和小写字母字符一样。因此，以下任何一项都可能代表检索命令：用户-PI-服务器A用户-PI-服务器B------------------- -----------------C-&gt;A：连接C-&gt;B：连接C-&gt;A：PASVA-&gt;C：227进入被动模式。A1，A2，A3，A4，a1，a2C-&gt;B：端口A1，A2，A3，A4，a1，a2B-&gt;C：200 好的C-&gt;A：STOR C-&gt;B：RETRB-&gt;A：连接到HOST-A，PORT-a图3数据连接应由服务器关闭建立数据一节中描述的条件连接。如果数据连接要关闭，请遵循不需要关闭连接的数据传输指示文件结束，服务器必须立即这样做。不允许等到新的传输命令之后因为用户进程已经测试了数据连接，看看它是否需要做“听”；（记住用户必须“听”关闭的数据端口，然后才能发送转移请求）。为了防止这里的竞争条件，服务器关闭数据连接后发送回复（226）（或者如果连接保持打开状态，“文件传输完成”回复（250）用户PI应该在等待其中一个回复之前发出新的传输命令）。任何时候用户或服务器看到连接是被另一方关闭，它应该立即阅读任何剩余的数据在连接上排队，并在其上发出关闭自己的一面。5.3.命令这些命令是Telnet字符串，通过控制FTP命令部分中描述的连接。命令函数和语义在本节中描述访问控制命令，传输参数命令，FTP服务命令和杂项命令。命令语法在这里指定。命令以命令代码开头，后跟一个参数领域。命令代码是四个或更少的字母字符。处理大写和小写字母字符一样。因此，以下任何一项都可能代表检索命令：<span class="grey">Postel &amp; Reynolds [第45页]</span></pre>
        <hr class="noprint"><!--NewPage-->
        <pre
            class="newpage"><span id="page-46"></span>
    <span class="grey"><a href="/doc/html/rfc959">RFC 959 </a>1985年10月</span>文件传输协议文件传输协议RETR Retr retr ReTr retr这也适用于任何表示参数值的符号，例如A或ASCII类型。命令代码和参数字段由一个或多个空格分隔。参数字段由可变长度的字符串组成以字符序列&lt;CRLF&gt;结尾（Carriage Return，行饲料）用于NVT-ASCII表示；用于其他协商语言可能会使用不同的行尾字符。应该是注意到服务器在线路结束前不会采取任何行动收到代码。语法在下面NVT-ASCII中指定。所有字符在参数字段是ASCII字符，包括任何ASCII表示十进制整数。方括号表示可选的参数字段。如果没有选择，适当的默认是隐含的。RETR Retr retr ReTr retr这也适用于任何表示参数值的符号，例如A或ASCII类型。命令代码和参数字段由一个或多个空格分隔。参数字段由可变长度的字符串组成以字符序列&lt;CRLF&gt;结尾（Carriage Return，行饲料）用于NVT-ASCII表示；用于其他协商语言可能会使用不同的行尾字符。应该是注意到服务器在线路结束前不会采取任何行动收到代码。语法在下面NVT-ASCII中指定。所有字符在参数字段是ASCII字符，包括任何ASCII表示十进制整数。方括号表示可选的参数字段。如果没有选择，适当的默认是隐含的。<span class="grey">Postel &amp; Reynolds [第46页]</span></pre>
        <hr class="noprint"><!--NewPage-->
        <pre
            class="newpage"><span id="page-47"></span>
    <span class="grey"><a href="/doc/html/rfc959">RFC 959 </a>1985年10月</span>文件传输协议文件传输协议5.3.1.FTP命令以下是FTP命令：用户 &lt;SP&gt; &lt;用户名&gt; &lt;CRLF&gt;通过 &lt;SP&gt; &lt;password&gt; &lt;CRLF&gt;ACCT &lt;SP&gt; &lt;帐户信息&gt; &lt;CRLF&gt;CWD &lt;SP&gt; &lt;路径名称&gt; &lt;CRLF&gt;CDUP &lt;CRLF&gt;SMNT &lt;SP&gt; &lt;pathname&gt; &lt;CRLF&gt;退出&lt;CRLF&gt;REIN &lt;CRLF&gt;端口 &lt;SP&gt; &lt;host-port&gt; &lt;CRLF&gt;PASV &lt;CRLF&gt;类型 &lt;SP&gt; &lt;type-code&gt; &lt;CRLF&gt;STRU &lt;SP&gt; &lt;结构代码&gt; &lt;CRLF&gt;模式 &lt;SP&gt; &lt;模式代码&gt; &lt;CRLF&gt;RETR &lt;SP&gt; &lt;pathname&gt; &lt;CRLF&gt;STOR &lt;SP&gt; &lt;pathname&gt; &lt;CRLF&gt;STOU &lt;CRLF&gt;APPE &lt;SP&gt; &lt;pathname&gt; &lt;CRLF&gt;ALLO &lt;SP&gt; &lt;十进制整数&gt;[&lt;SP&gt; R &lt;SP&gt; &lt;decimal-integer&gt;] &lt;CRLF&gt;REST &lt;SP&gt; &lt;marker&gt; &lt;CRLF&gt;RNFR &lt;SP&gt; &lt;pathname&gt; &lt;CRLF&gt;RNTO &lt;SP&gt; &lt;pathname&gt; &lt;CRLF&gt;ABOR &lt;CRLF&gt;DELE &lt;SP&gt; &lt;pathname&gt; &lt;CRLF&gt;RMD &lt;SP&gt; &lt;pathname&gt; &lt;CRLF&gt;MKD &lt;SP&gt; &lt;pathname&gt; &lt;CRLF&gt;PWD &lt;CRLF&gt;列表[&lt;SP&gt; &lt;pathname&gt;] &lt;CRLF&gt;NLST [&lt;SP&gt; &lt;pathname&gt;] &lt;CRLF&gt;网站 &lt;SP&gt; &lt;string&gt; &lt;CRLF&gt;系统&lt;CRLF&gt;STAT [&lt;SP&gt; &lt;pathname&gt;] &lt;CRLF&gt;帮助 [&lt;SP&gt; &lt;string&gt;] &lt;CRLF&gt;NOOP &lt;CRLF&gt;5.3.1.FTP命令以下是FTP命令：用户 &lt;SP&gt; &lt;用户名&gt; &lt;CRLF&gt;通过 &lt;SP&gt; &lt;password&gt; &lt;CRLF&gt;ACCT &lt;SP&gt; &lt;帐户信息&gt; &lt;CRLF&gt;CWD &lt;SP&gt; &lt;路径名称&gt; &lt;CRLF&gt;CDUP &lt;CRLF&gt;SMNT &lt;SP&gt; &lt;pathname&gt; &lt;CRLF&gt;退出&lt;CRLF&gt;REIN &lt;CRLF&gt;端口 &lt;SP&gt; &lt;host-port&gt; &lt;CRLF&gt;PASV &lt;CRLF&gt;类型 &lt;SP&gt; &lt;type-code&gt; &lt;CRLF&gt;STRU &lt;SP&gt; &lt;结构代码&gt; &lt;CRLF&gt;模式 &lt;SP&gt; &lt;模式代码&gt; &lt;CRLF&gt;RETR &lt;SP&gt; &lt;pathname&gt; &lt;CRLF&gt;STOR &lt;SP&gt; &lt;pathname&gt; &lt;CRLF&gt;STOU &lt;CRLF&gt;APPE &lt;SP&gt; &lt;pathname&gt; &lt;CRLF&gt;ALLO &lt;SP&gt; &lt;十进制整数&gt;[&lt;SP&gt; R &lt;SP&gt; &lt;decimal-integer&gt;] &lt;CRLF&gt;REST &lt;SP&gt; &lt;marker&gt; &lt;CRLF&gt;RNFR &lt;SP&gt; &lt;pathname&gt; &lt;CRLF&gt;RNTO &lt;SP&gt; &lt;pathname&gt; &lt;CRLF&gt;ABOR &lt;CRLF&gt;DELE &lt;SP&gt; &lt;pathname&gt; &lt;CRLF&gt;RMD &lt;SP&gt; &lt;pathname&gt; &lt;CRLF&gt;MKD &lt;SP&gt; &lt;pathname&gt; &lt;CRLF&gt;PWD &lt;CRLF&gt;列表[&lt;SP&gt; &lt;pathname&gt;] &lt;CRLF&gt;NLST [&lt;SP&gt; &lt;pathname&gt;] &lt;CRLF&gt;网站 &lt;SP&gt; &lt;string&gt; &lt;CRLF&gt;系统&lt;CRLF&gt;STAT [&lt;SP&gt; &lt;pathname&gt;] &lt;CRLF&gt;帮助 [&lt;SP&gt; &lt;string&gt;] &lt;CRLF&gt;NOOP &lt;CRLF&gt;<span class="grey">Postel &amp; Reynolds [第47页]</span></pre>
        <hr class="noprint"><!--NewPage-->
        <pre
            class="newpage"><span id="page-48"></span>
    <span class="grey"><a href="/doc/html/rfc959">RFC 959 </a>1985年10月</span>文件传输协议文件传输协议5.3.2.FTP命令参数上述参数字段的语法（使用BNF符号在适用的情况下）是：&lt;用户名&gt; ::= &lt;string&gt;&lt;password&gt; ::= &lt;string&gt;&lt;帐户信息&gt; ::= &lt;string&gt;&lt;string&gt; ::= &lt;char&gt; | &lt;char&gt;&lt;string&gt;&lt;char&gt; ::= 128个ASCII字符中的任何一个，除了&lt;CR&gt;和&lt;LF&gt;&lt;marker&gt; ::= &lt;pr-string&gt;&lt;pr-string&gt; ::= &lt;pr-char&gt; | &lt;pr-char&gt;&lt;pr-string&gt;&lt;pr-char&gt; ::= 可打印字符，任何ASCII代码33到126&lt;byte-size&gt; ::= &lt;number&gt;&lt;host-port&gt; ::= &lt;host-number&gt;，&lt;port-number&gt;&lt;host-number&gt; ::= &lt;number&gt;,&lt;number&gt;,&lt;number&gt;,&lt;number&gt;&lt;port-number&gt; ::= &lt;number&gt;,&lt;number&gt;&lt;number&gt; ::= 任何十进制整数1到255&lt;form-code&gt; ::= N | T | C&lt;type-code&gt; ::= A [&lt;sp&gt; &lt;form-code&gt;]| E [&lt;sp&gt; &lt;表单代码&gt;]| 我| L &lt;sp&gt; &lt;字节大小&gt;&lt;结构代码&gt; ::= F | R | P&lt;mode-code&gt; ::= S | B | C&lt;pathname&gt; ::= &lt;string&gt;&lt;十进制整数&gt; ::= 任何十进制整数5.3.2.FTP命令参数上述参数字段的语法（使用BNF符号在适用的情况下）是：&lt;用户名&gt; ::= &lt;string&gt;&lt;password&gt; ::= &lt;string&gt;&lt;帐户信息&gt; ::= &lt;string&gt;&lt;string&gt; ::= &lt;char&gt; | &lt;char&gt;&lt;string&gt;&lt;char&gt; ::= 128个ASCII字符中的任何一个，除了&lt;CR&gt;和&lt;LF&gt;&lt;marker&gt; ::= &lt;pr-string&gt;&lt;pr-string&gt; ::= &lt;pr-char&gt; | &lt;pr-char&gt;&lt;pr-string&gt;&lt;pr-char&gt; ::= 可打印字符，任何ASCII代码33到126&lt;byte-size&gt; ::= &lt;number&gt;&lt;host-port&gt; ::= &lt;host-number&gt;，&lt;port-number&gt;&lt;host-number&gt; ::= &lt;number&gt;,&lt;number&gt;,&lt;number&gt;,&lt;number&gt;&lt;port-number&gt; ::= &lt;number&gt;,&lt;number&gt;&lt;number&gt; ::= 任何十进制整数1到255&lt;form-code&gt; ::= N | T | C&lt;type-code&gt; ::= A [&lt;sp&gt; &lt;form-code&gt;]| E [&lt;sp&gt; &lt;表单代码&gt;]| 我| L &lt;sp&gt; &lt;字节大小&gt;&lt;结构代码&gt; ::= F | R | P&lt;mode-code&gt; ::= S | B | C&lt;pathname&gt; ::= &lt;string&gt;&lt;十进制整数&gt; ::= 任何十进制整数<span class="grey">Postel &amp; Reynolds [第48页]</span></pre>
        <hr class="noprint"><!--NewPage-->
        <pre
            class="newpage"><span id="page-49"></span>
    <span class="grey"><a href="/doc/html/rfc959">RFC 959 </a>1985年10月</span>文件传输协议文件传输协议5.4.命令和回复的顺序用户和服务器之间的通信旨在成为交替对话。因此，用户发出FTP命令和服务器以提示的主要回复进行响应。用户应该等待这个最初的主要成功或失败反应发送进一步的命令。某些命令需要第二次回复，用户应该也等等。例如，这些回复可能会报告进展情况或完成文件传输或关闭数据连接。它们是对文件传输命令的次要回复。一组重要的信息回复是连接问候。在正常情况下，服务器将发送220连接完成后，回复“等待输入”。这个用户应等待此问候消息，然后发送任何命令。如果服务器无法立即接受输入，一个应立即发送120个“预期延迟”回复，并发送220个准备好后回复。然后，用户将知道不要挂断，如果在那里是一种延迟。自发回复有时“系统”会自发发送一条消息给用户（通常是所有用户）。例如，“系统瘫痪了15分钟后”。FTP中没有此类条款从服务器向用户发送自发信息。建议将此类信息排在服务器-PI，并在下次回复中交付给用户-PI（可能使其成为多行回复）。下表列出了其他成功和失败的回复每个命令。这些必须严格遵守；服务器可以在回复中替换文本，但含义和行动意味着通过代码号和特定的命令回复序列无法更改。命令-回复序列本节介绍了命令-重要序列。每一个命令及其可能的回复列出；命令组是一起列出。初步回复首先列出（与他们的后续回复缩进并在它们下面），然后积极和消极的完成，最后是中介5.4.命令和回复的顺序用户和服务器之间的通信旨在成为交替对话。因此，用户发出FTP命令和服务器以提示的主要回复进行响应。用户应该等待这个最初的主要成功或失败反应发送进一步的命令。某些命令需要第二次回复，用户应该也等等。例如，这些回复可能会报告进展情况或完成文件传输或关闭数据连接。它们是对文件传输命令的次要回复。一组重要的信息回复是连接问候。在正常情况下，服务器将发送220连接完成后，回复“等待输入”。这个用户应等待此问候消息，然后发送任何命令。如果服务器无法立即接受输入，一个应立即发送120个“预期延迟”回复，并发送220个准备好后回复。然后，用户将知道不要挂断，如果在那里是一种延迟。自发回复有时“系统”会自发发送一条消息给用户（通常是所有用户）。例如，“系统瘫痪了15分钟后”。FTP中没有此类条款从服务器向用户发送自发信息。建议将此类信息排在服务器-PI，并在下次回复中交付给用户-PI（可能使其成为多行回复）。下表列出了其他成功和失败的回复每个命令。这些必须严格遵守；服务器可以在回复中替换文本，但含义和行动意味着通过代码号和特定的命令回复序列无法更改。命令-回复序列本节介绍了命令-重要序列。每一个命令及其可能的回复列出；命令组是一起列出。初步回复首先列出（与他们的后续回复缩进并在它们下面），然后积极和消极的完成，最后是中介<span class="grey">Postel &amp; Reynolds [第49页]</span></pre>
        <hr class="noprint"><!--NewPage-->
        <pre
            class="newpage"><span id="page-50"></span>
    <span class="grey"><a href="/doc/html/rfc959">RFC 959 </a>1985年10月</span>文件传输协议文件传输协议回复序列中的剩余命令跟随。这份清单构成了国家的基础图表，将单独呈现。连接建立120220220421登录用户230530500，501，421331，332传球230202530500，501，503，421332ACCT230202530500，501，503，421CWD250500，501，502，421，530，550CDUP200500，501，502，421，530，550SMNT202，250500，501，502，421，530，550退出登录缰绳120220220421500，502退出221500回复序列中的剩余命令跟随。这份清单构成了国家的基础图表，将单独呈现。连接建立120220220421登录用户230530500，501，421331，332传球230202530500，501，503，421332ACCT230202530500，501，503，421CWD250500，501，502，421，530，550CDUP200500，501，502，421，530，550SMNT202，250500，501，502，421，530，550退出登录缰绳120220220421500，502退出221500<span class="grey">Postel &amp; Reynolds [第 50 页]</span></pre>
        <hr class="noprint"><!--NewPage-->
        <pre
            class="newpage"><span id="page-51"></span>
    <span class="grey"><a href="/doc/html/rfc959">RFC 959 </a>1985年10月</span>文件传输协议文件传输协议传输参数港口200500，501，421，530PASV227500，501，502，421，530形式200500、501、504、421、530类型200500、501、504、421、530斯特鲁200500、501、504、421、530文件操作命令ALLO200202500、501、504、421、530剩余部分500，501，502，421，530350斯托125，150（110）226，250425，426，451，551，552532，450，452，553500，501，421，530斯托125，150（110）226，250425，426，451，551，552532，450，452，553500，501，421，530RETR125，150（110）226，250425，426，451450，550500，501，421，530传输参数港口200500，501，421，530PASV227500，501，502，421，530形式200500、501、504、421、530类型200500、501、504、421、530斯特鲁200500、501、504、421、530文件操作命令ALLO200202500、501、504、421、530剩余部分500，501，502，421，530350斯托125，150（110）226，250425，426，451，551，552532，450，452，553500，501，421，530斯托125，150（110）226，250425，426，451，551，552532，450，452，553500，501，421，530RETR125，150（110）226，250425，426，451450，550500，501，421，530<span class="grey">Postel &amp; Reynolds [第51页]</span></pre>
        <hr class="noprint"><!--NewPage-->
        <pre
            class="newpage"><span id="page-52"></span>
    <span class="grey"><a href="/doc/html/rfc959">RFC 959 </a>1985年10月</span>文件传输协议文件传输协议列表125，150226，250425，426，451450500，501，502，421，530NLST125，150226，250425，426，451450500，501，502，421，530APPE125，150（110）226，250425，426，451，551，552532，450，550，452，553500，501，502，421，530RNFR450，550500，501，502，421，530350RNTO250532，553500，501，502，503，421，530德尔250450，550500，501，502，421，530RMD250500，501，502，421，530，550MKD257500，501，502，421，530，550PWD257500，501，502，421，550阿伯尔225，226500，501，502，421列表125，150226，250425，426，451450500，501，502，421，530NLST125，150226，250425，426，451450500，501，502，421，530APPE125，150（110）226，250425，426，451，551，552532，450，550，452，553500，501，502，421，530RNFR450，550500，501，502，421，530350RNTO250532，553500，501，502，503，421，530德尔250450，550500，501，502，421，530RMD250500，501，502，421，530，550MKD257500，501，502，421，530，550PWD257500，501，502，421，550阿伯尔225，226500，501，502，421<span class="grey">Postel &amp; Reynolds [第52页]</span></pre>
        <hr class="noprint"><!--NewPage-->
        <pre
            class="newpage"><span id="page-53"></span>
    <span class="grey"><a href="/doc/html/rfc959">RFC 959 </a>1985年10月</span>文件传输协议文件传输协议信息命令系统215500，501，502，421统计211，212，213450500，501，502，421，530帮助211，214500，501，502，421杂项命令站点200202500，501，530诺普200500 421信息命令系统215500，501，502，421统计211，212，213450500，501，502，421，530帮助211，214500，501，502，421杂项命令站点200202500，501，530诺普200500 421<span class="grey">Postel &amp; Reynolds [第53页]</span></pre>
        <hr class="noprint"><!--NewPage-->
        <pre
            class="newpage"><span id="page-54"></span>
    <span class="grey"><a href="/doc/html/rfc959">RFC 959 </a>1985年10月</span>文件传输协议文件传输协议<span class="h2" id="autoid-6"><a class="selflink" id="section-6" href="#section-6">6</a>。状态图</span>在这里，我们为一个非常简单的FTP提供了状态图在这里，我们为一个非常简单的FTP提供了状态图实施。仅使用回复代码的第一个数字。每组FTP命令或命令都有一个状态图序列。命令分组是通过构建模型来确定的然后，每个命令在结构上将命令收集在一起相同的模型。对于每个命令或命令序列，有三种可能结果：成功（S）、失败（F）和错误（E）。在州内在下面的图表中，我们使用符号B表示“开始”，符号W表示等待回复。我们首先展示代表最大FTP组的图表命令：1,3 +---+-----------------| E || +---+|+---+ cmd +---+ 2 +---+| B |----------&gt;| W |----------&gt;| S |+---+ +---+ +---+|| 4,5 +---+----------------&gt;| F |+---+这张图表模拟了命令：ABOR, ALLO, DELE, CWD, CDUP, SMNT, HELP, MODE, NOOP, PASV,退出、站点、端口、系统、STAT、RMD、MKD、PWD、STRU和类型。实施。仅使用回复代码的第一个数字。每组FTP命令或命令都有一个状态图序列。命令分组是通过构建模型来确定的然后，每个命令在结构上将命令收集在一起相同的模型。对于每个命令或命令序列，有三种可能结果：成功（S）、失败（F）和错误（E）。在州内在下面的图表中，我们使用符号B表示“开始”，符号W表示等待回复。我们首先展示代表最大FTP组的图表命令：1,3 +---+-----------------| E || +---+|+---+ cmd +---+ 2 +---+| B |----------&gt;| W |----------&gt;| S |+---+ +---+ +---+|| 4,5 +---+----------------&gt;| F |+---+这张图表模拟了命令：ABOR, ALLO, DELE, CWD, CDUP, SMNT, HELP, MODE, NOOP, PASV,退出、站点、端口、系统、STAT、RMD、MKD、PWD、STRU和类型。<span class="grey">Postel &amp; Reynolds [第54页]</span></pre>
        <hr class="noprint"><!--NewPage-->
        <pre
            class="newpage"><span id="page-55"></span>
    <span class="grey"><a href="/doc/html/rfc959">RFC 959 </a>1985年10月</span>文件传输协议文件传输协议另一大组命令由一个非常相似的图表：3 +---+-----------------| E || +---+|+---+ cmd +---+ 2 +---+| B |----------&gt;| W |----------&gt;| S |+---+ ---&gt;+---+ +---+| | | || | | 4,5 +---+| 1 | -----------------&gt;| F |----- +---+这张图表模拟了命令：APPE、LIST、NLST、REIN、RETR、STOR和STOU。请注意，第二个模型也可以用来表示第一个一组命令，唯一的区别是第一组100个系列的回复是意想不到的，因此被视为错误，而第二组期望（有些可能需要）100个系列回复。请记住，每个命令最多允许一个100系列回复。其余的图表模型命令序列，也许是最简单的其中有重命名序列：+---+ RNFR +---+ 1,2 +---+| B |----------&gt;| W |----------&gt;| E |+---+ +---+ --&gt;+---+| | | |3 | | 4,5 |-------------- ------ || | | +---+| --------------&gt;| S || | 1,3 | | +---+| 2| --------| | | |V | | |+---+ RNTO +---+ 4,5 -----&gt;+---+| |-----------&gt;| W |----------&gt;| F |+---+ +---+ +---+另一大组命令由一个非常相似的图表：3 +---+-----------------| E || +---+|+---+ cmd +---+ 2 +---+| B |----------&gt;| W |----------&gt;| S |+---+ ---&gt;+---+ +---+| | | || | | 4,5 +---+| 1 | -----------------&gt;| F |----- +---+这张图表模拟了命令：APPE、LIST、NLST、REIN、RETR、STOR和STOU。请注意，第二个模型也可以用来表示第一个一组命令，唯一的区别是第一组100个系列的回复是意想不到的，因此被视为错误，而第二组期望（有些可能需要）100个系列回复。请记住，每个命令最多允许一个100系列回复。其余的图表模型命令序列，也许是最简单的其中有重命名序列：+---+ RNFR +---+ 1,2 +---+| B |----------&gt;| W |----------&gt;| E |+---+ +---+ --&gt;+---+| | | |3 | | 4,5 |-------------- ------ || | | +---+| --------------&gt;| S || | 1,3 | | +---+| 2| --------| | | |V | | |+---+ RNTO +---+ 4,5 -----&gt;+---+| |-----------&gt;| W |----------&gt;| F |+---+ +---+ +---+<span class="grey">Postel &amp; Reynolds [第55页]</span></pre>
        <hr class="noprint"><!--NewPage-->
        <pre
            class="newpage"><span id="page-56"></span>
    <span class="grey"><a href="/doc/html/rfc959">RFC 959 </a>1985年10月</span>文件传输协议文件传输协议下一张图表是重新启动命令的简单模型：+---+ 休息 +---+ 1,2 +---+| B |----------&gt;| W |----------&gt;| E |+---+ +---+ --&gt;+---+| | | |3 | | 4,5 |-------------- ------ || | | +---+| --------------&gt;| S || | 3 | | +---+| 2| --------| | | |V | | |+---+ cmd +---+ 4,5 -----&gt;+---+| |-----------&gt;| W |----------&gt;| F |+---+ --&gt;+---+ +---+| || 1 |------其中“cmd”是APPE、STOR或RETR。我们注意到，上述三种模式是相似的。重启不同从重命名两个，仅在处理100个系列回复第二阶段，而第二组期望（有些可能需要）100个系列回复。请记住，最多一个100系列的回复是每个命令允许。下一张图表是重新启动命令的简单模型：+---+ 休息 +---+ 1,2 +---+| B |----------&gt;| W |----------&gt;| E |+---+ +---+ --&gt;+---+| | | |3 | | 4,5 |-------------- ------ || | | +---+| --------------&gt;| S || | 3 | | +---+| 2| --------| | | |V | | |+---+ cmd +---+ 4,5 -----&gt;+---+| |-----------&gt;| W |----------&gt;| F |+---+ --&gt;+---+ +---+| || 1 |------其中“cmd”是APPE、STOR或RETR。我们注意到，上述三种模式是相似的。重启不同从重命名两个，仅在处理100个系列回复第二阶段，而第二组期望（有些可能需要）100个系列回复。请记住，最多一个100系列的回复是每个命令允许。<span class="grey">Postel &amp; Reynolds [第56页]</span></pre>
        <hr class="noprint"><!--NewPage-->
        <pre
            class="newpage"><span id="page-57"></span>
    <span class="grey"><a href="/doc/html/rfc959">RFC 959 </a>1985年10月</span>文件传输协议文件传输协议最复杂的图表是登录序列：1+---+ 用户 +---+-------------&gt;+---+| B |----------&gt;| W | 2 ----&gt;| E |+---+ +---+------ | --&gt;+---+| | | | |3 | | 4,5 | | |---------------- ----- | | || | | | || | | | || --------- || 1| | | |V | | | |+---+ 通过 +---+ 2 | ------&gt;+---+| |----------&gt;| W |-------------&gt;| S |+---+ +---+ -----------&gt;+---+| | | | |3 | |4,5| | |-------------------- -------- || | | | || | | | || -----------| 1,3| | | |V | 2| | |+---+ ACCT +---+-- | -----&gt;+---+| |----------&gt;| W | 4,5 --------&gt;| F |+---+ +---+-------------&gt;+---+最复杂的图表是登录序列：1+---+ 用户 +---+-------------&gt;+---+| B |----------&gt;| W | 2 ----&gt;| E |+---+ +---+------ | --&gt;+---+| | | | |3 | | 4,5 | | |---------------- ----- | | || | | | || | | | || --------- || 1| | | |V | | | |+---+ 通过 +---+ 2 | ------&gt;+---+| |----------&gt;| W |-------------&gt;| S |+---+ +---+ -----------&gt;+---+| | | | |3 | |4,5| | |-------------------- -------- || | | | || | | | || -----------| 1,3| | | |V | 2| | |+---+ ACCT +---+-- | -----&gt;+---+| |----------&gt;| W | 4,5 --------&gt;| F |+---+ +---+-------------&gt;+---+<span class="grey">Postel &amp; Reynolds [第57页]</span></pre>
        <hr class="noprint"><!--NewPage-->
        <pre
            class="newpage"><span id="page-58"></span>
    <span class="grey"><a href="/doc/html/rfc959">RFC 959 </a>1985年10月</span>文件传输协议文件传输协议最后，我们提出了一个可用于建模的广义图表命令和回复交换：------------------------------------------------| |开始 | || V || +---+ cmd +---+ 2 +---+ |--&gt;| |--------&gt;| |----------&gt;| | || | | W | | S |-----|--&gt;| | --&gt;| |----- | | || +---+ | +---+ 4,5 | +---+ || | | | | | || | | 1| |3 | +---+ || | | | | | | | || | ---- | ----&gt;| F |-----| | | | || | | +---+-------------------||v结束最后，我们提出了一个可用于建模的广义图表命令和回复交换：------------------------------------------------| |开始 | || V || +---+ cmd +---+ 2 +---+ |--&gt;| |--------&gt;| |----------&gt;| | || | | W | | S |-----|--&gt;| | --&gt;| |----- | | || +---+ | +---+ 4,5 | +---+ || | | | | | || | | 1| |3 | +---+ || | | | | | | | || | ---- | ----&gt;| F |-----| | | | || | | +---+-------------------||v结束<span class="grey">Postel &amp; Reynolds [第58页]</span></pre>
        <hr class="noprint"><!--NewPage-->
        <pre
            class="newpage"><span id="page-59"></span>
    <span class="grey"><a href="/doc/html/rfc959">RFC 959 </a>1985年10月</span>文件传输协议文件传输协议<span class="h2" id="autoid-7"><a class="selflink" id="section-7" href="#section-7">7</a>。典型的FTP场景</span>主机U的用户想要将文件传输到/从主机S：主机U的用户想要将文件传输到/从主机S：一般来说，用户将通过中介与服务器通信用户-FTP进程。以下可能是一个典型的场景。这个用户FTP提示显示在括号中，'----&gt;'表示从主机U到主机S的命令，并且“&lt;----”表示来自主机S到主机U。所涉及的用户操作的本地命令ftp（主机）multics&lt;CR&gt;连接到主机S，端口L，建立控制连接。&lt;---- 220 服务就绪 &lt;CRLF&gt;。用户名 Doe &lt;CR&gt; USER Doe&lt;CRLF&gt;----&gt;&lt;---- 331 用户名 好的，需要密码&lt;CRLF&gt;。密码喃喃自语&lt;CR&gt;通过喃喃自语&lt;CRLF&gt;----&gt;&lt;---- 230 用户登录&lt;CRLF&gt;。检索（本地类型）ASCII&lt;CR&gt;（本地路径名）测试1 &lt;CR&gt; User-FTP以ASCII打开本地文件。（用于路径名称）test.pl1&lt;CR&gt; RETR test.pl1&lt;CRLF&gt; ----&gt;&lt;---- 150 文件状态可以；即将打开数据连接&lt;CRLF&gt;。服务器进行数据连接到港口U。&lt;---- 226 关闭数据连接，文件传输成功&lt;CRLF&gt;。类型 Image&lt;CR&gt; TYPE I&lt;CRLF&gt; ----&gt;&lt;---- 200 命令 OK&lt;CRLF&gt;存储（本地类型）图像&lt;CR&gt;（本地路径名）文件转储&lt;CR&gt;用户-FTP在图像中打开本地文件。（for.pathname）&gt;udd&gt;cn&gt;fd&lt;CR&gt; STOR &gt;udd&gt;cn&gt;fd&lt;CRLF&gt; ----&gt;&lt;---- 550 访问被拒绝&lt;CRLF&gt;终止退出 &lt;CRLF&gt; ----&gt;服务器关闭所有连接。一般来说，用户将通过中介与服务器通信用户-FTP进程。以下可能是一个典型的场景。这个用户FTP提示显示在括号中，'----&gt;'表示从主机U到主机S的命令，并且“&lt;----”表示来自主机S到主机U。所涉及的用户操作的本地命令ftp（主机）multics&lt;CR&gt;连接到主机S，端口L，建立控制连接。&lt;---- 220 服务就绪 &lt;CRLF&gt;。用户名 Doe &lt;CR&gt; USER Doe&lt;CRLF&gt;----&gt;&lt;---- 331 用户名 好的，需要密码&lt;CRLF&gt;。密码喃喃自语&lt;CR&gt;通过喃喃自语&lt;CRLF&gt;----&gt;&lt;---- 230 用户登录&lt;CRLF&gt;。检索（本地类型）ASCII&lt;CR&gt;（本地路径名）测试1 &lt;CR&gt; User-FTP以ASCII打开本地文件。（用于路径名称）test.pl1&lt;CR&gt; RETR test.pl1&lt;CRLF&gt; ----&gt;&lt;---- 150 文件状态可以；即将打开数据连接&lt;CRLF&gt;。服务器进行数据连接到港口U。&lt;---- 226 关闭数据连接，文件传输成功&lt;CRLF&gt;。类型 Image&lt;CR&gt; TYPE I&lt;CRLF&gt; ----&gt;&lt;---- 200 命令 OK&lt;CRLF&gt;存储（本地类型）图像&lt;CR&gt;（本地路径名）文件转储&lt;CR&gt;用户-FTP在图像中打开本地文件。（for.pathname）&gt;udd&gt;cn&gt;fd&lt;CR&gt; STOR &gt;udd&gt;cn&gt;fd&lt;CRLF&gt; ----&gt;&lt;---- 550 访问被拒绝&lt;CRLF&gt;终止退出 &lt;CRLF&gt; ----&gt;服务器关闭所有连接。<span class="h2" id="autoid-8"><a class="selflink" id="section-8" href="#section-8">8</a>。连接建立</span>FTP控制连接是通过用户之间的TCP建立的FTP控制连接是通过用户之间的TCP建立的进程端口U和服务器进程端口L。这个协议是分配服务端口21（25个八进制），即L=21。进程端口U和服务器进程端口L。这个协议是分配服务端口21（25个八进制），即L=21。<span class="grey">Postel &amp; Reynolds [第59页]</span></pre>
        <hr class="noprint"><!--NewPage-->
        <pre
            class="newpage"><span id="page-60"></span>
    <span class="grey"><a href="/doc/html/rfc959">RFC 959 </a>1985年10月</span>文件传输协议文件传输协议附录一-页面结构FTP支持页面结构的需求主要来自需要支持TOPS-20之间的高效文件传输系统，特别是NLS使用的文件。TOPS-20的文件系统基于页面的概念。这个操作系统在将文件操作为页面方面效率最高。操作系统为文件系统提供了一个接口，以便许多应用程序将文件视为顺序字符流。然而，一些应用程序使用底层页面结构直接，其中一些会创建漏洞文件。TOPS-20磁盘文件由四件事组成：路径名、页面表、一组（可能是空的）页面和一组属性。路径名在RETR或STOR命令中指定。它包括目录名、文件名、文件扩展名和生成号码。页面表最多包含2**18个条目。每个条目可能是空，或者可能指向一个页面。如果它不是空的，也有一些特定于页面的访问位；并非文件的所有页面都需要相同的访问保护。页面是512个单词的连续集，每个单词36位。文件描述符块（FDB）中文件的属性，包含创作时间、写作时间、阅读时间、作家等内容字节大小，文件结束指针，读取和写入计数，备份系统磁带号等。请注意，没有要求页面表中的条目是毗连的。占用之间可能有空的页面表插槽那些。此外，文件指针的末尾只是一个数字。没有要求它实际上指向文件中的“最后”基准。TOPS-20中的普通顺序I/O调用将导致文件结束指针在写入最后一个数据后留下，但其他操作可能导致它不是这样，如果一个特定的编程系统是这样需要。事实上，在这两种特殊情况下，“空洞”文件和文件结束指针不在文件末尾，与NLS数据一起出现文件。附录一-页面结构FTP支持页面结构的需求主要来自需要支持TOPS-20之间的高效文件传输系统，特别是NLS使用的文件。TOPS-20的文件系统基于页面的概念。这个操作系统在将文件操作为页面方面效率最高。操作系统为文件系统提供了一个接口，以便许多应用程序将文件视为顺序字符流。然而，一些应用程序使用底层页面结构直接，其中一些会创建漏洞文件。TOPS-20磁盘文件由四件事组成：路径名、页面表、一组（可能是空的）页面和一组属性。路径名在RETR或STOR命令中指定。它包括目录名、文件名、文件扩展名和生成号码。页面表最多包含2**18个条目。每个条目可能是空，或者可能指向一个页面。如果它不是空的，也有一些特定于页面的访问位；并非文件的所有页面都需要相同的访问保护。页面是512个单词的连续集，每个单词36位。文件描述符块（FDB）中文件的属性，包含创作时间、写作时间、阅读时间、作家等内容字节大小，文件结束指针，读取和写入计数，备份系统磁带号等。请注意，没有要求页面表中的条目是毗连的。占用之间可能有空的页面表插槽那些。此外，文件指针的末尾只是一个数字。没有要求它实际上指向文件中的“最后”基准。TOPS-20中的普通顺序I/O调用将导致文件结束指针在写入最后一个数据后留下，但其他操作可能导致它不是这样，如果一个特定的编程系统是这样需要。事实上，在这两种特殊情况下，“空洞”文件和文件结束指针不在文件末尾，与NLS数据一起出现文件。<span class="grey">Postel &amp; Reynolds [第60页]</span></pre>
        <hr class="noprint"><!--NewPage-->
        <pre
            class="newpage"><span id="page-61"></span>
    <span class="grey"><a href="/doc/html/rfc959">RFC 959 </a>1985年10月</span>文件传输协议文件传输协议TOPS-20分页文件可以使用FTP传输参数发送：类型L 36、STRU P和MODE S（事实上，可以使用任何模式）。每个信息页面都有一个标题。每个标题字段，这是一个逻辑字节，是一个TOPS-20单词，因为TYPE是L 36。标题字段是：单词0：标题长度。标题长度为5。单词1：页面索引。如果数据是磁盘文件页面，这就是它的编号文件页面地图中的页面。文件中的空白页面（孔）根本没有发送。请注意，一个洞不等同于一个零页。单词2：数据长度。本页中数据字数，在标题之后。因此，传输单元的总长度是标题长度加上数据长度。单词3：页面类型。这是什么类型的块的代码。数据页面是类型3，FDB页面是类型2。Word 4：页面访问控制。与文件页面中页面关联的访问位地图。（这个完整的字数量由SPACS放入AC2中程序从网络读取到磁盘。）标题之后是数据长度数据字。数据长度是目前，数据页面为512或FDB为31。尾随磁盘文件页面中的零可能会被丢弃，使数据长度更短在那种情况下，超过512。TOPS-20分页文件可以使用FTP传输参数发送：类型L 36、STRU P和MODE S（事实上，可以使用任何模式）。每个信息页面都有一个标题。每个标题字段，这是一个逻辑字节，是一个TOPS-20单词，因为TYPE是L 36。标题字段是：单词0：标题长度。标题长度为5。单词1：页面索引。如果数据是磁盘文件页面，这就是它的编号文件页面地图中的页面。文件中的空白页面（孔）根本没有发送。请注意，一个洞不等同于一个零页。单词2：数据长度。本页中数据字数，在标题之后。因此，传输单元的总长度是标题长度加上数据长度。单词3：页面类型。这是什么类型的块的代码。数据页面是类型3，FDB页面是类型2。Word 4：页面访问控制。与文件页面中页面关联的访问位地图。（这个完整的字数量由SPACS放入AC2中程序从网络读取到磁盘。）标题之后是数据长度数据字。数据长度是目前，数据页面为512或FDB为31。尾随磁盘文件页面中的零可能会被丢弃，使数据长度更短在那种情况下，超过512。<span class="grey">Postel &amp; Reynolds [第61页]</span></pre>
        <hr class="noprint"><!--NewPage-->
        <pre
            class="newpage"><span id="page-62"></span>
    <span class="grey"><a href="/doc/html/rfc959">RFC 959 </a>1985年10月</span>文件传输协议文件传输协议附录二-目录命令由于UNIX有一个类似树的目录结构，其中目录和普通文件一样容易操作，扩展很有用这些机器上的FTP服务器包括处理的命令目录的创建。因为还有其他主持人在ARPA-Internet具有树状目录（包括TOPS-20和Multics），这些命令尽可能通用。四个目录命令已添加到FTP中：MKD路径名制作一个名为“pathname”的目录。RMD路径名删除名为“pathname”的目录。PWD打印当前工作目录名称。CDUP更改为当前工作目录的父目录。“路径名”参数应创建（删除）为当前工作目录的子目录，除非“路径名”字符串包含足够的信息，可以指定否则服务器，例如，“路径名”是一个绝对的路径名（在UNIX和Multics），或路径名是类似“&lt;abso.lute.path&gt;”到TOPS-20。回复代码CDUP命令是CWD的一个特殊情况，并包含在简化传输目录程序的实现操作系统之间的树具有不同的语法命名父目录。CDUP的回复代码是与CWD的回复代码相同。RMD的回复代码与其回复代码相同文件模拟，DELE。然而，MKD的回复代码有点复杂。罗马字母的第一个字母新创建的目录可能会成为未来的对象附录二-目录命令由于UNIX有一个类似树的目录结构，其中目录和普通文件一样容易操作，扩展很有用这些机器上的FTP服务器包括处理的命令目录的创建。因为还有其他主持人在ARPA-Internet具有树状目录（包括TOPS-20和Multics），这些命令尽可能通用。四个目录命令已添加到FTP中：MKD路径名制作一个名为“pathname”的目录。RMD路径名删除名为“pathname”的目录。PWD打印当前工作目录名称。CDUP更改为当前工作目录的父目录。“路径名”参数应创建（删除）为当前工作目录的子目录，除非“路径名”字符串包含足够的信息，可以指定否则服务器，例如，“路径名”是一个绝对的路径名（在UNIX和Multics），或路径名是类似“&lt;abso.lute.path&gt;”到TOPS-20。回复代码CDUP命令是CWD的一个特殊情况，并包含在简化传输目录程序的实现操作系统之间的树具有不同的语法命名父目录。CDUP的回复代码是与CWD的回复代码相同。RMD的回复代码与其回复代码相同文件模拟，DELE。然而，MKD的回复代码有点复杂。罗马字母的第一个字母新创建的目录可能会成为未来的对象<span class="grey">Postel &amp; Reynolds [第62页]</span></pre>
        <hr class="noprint"><!--NewPage-->
        <pre
            class="newpage"><span id="page-63"></span>
    <span class="grey"><a href="/doc/html/rfc959">RFC 959 </a>1985年10月</span>文件传输协议文件传输协议CWD命令。不幸的是，对MKD的论点可能并不总是CWD的合适论点。就是这种情况，例如，当TOPS-20子目录是通过仅提供子目录创建的名字。也就是说，使用TOPS-20服务器FTP，命令序列MKD MYDIRCWD MYDIR会失败的。新目录只能由其引用“绝对”名称；例如，如果上述MKD命令是在连接到目录&lt;DFRANKLIN&gt;，新的子目录只能用&lt;DFRANKLIN.MYDIR&gt;这个名字来称呼。然而，即使在UNIX和Multics上，给MKD的论点也可能不合适。如果它是一个“相对”路径名（即路径名相对于当前目录进行解释），用户需要在同一个当前目录中才能到达子目录。根据应用程序的不同，这可能是不方便。无论如何，它都不是很坚固。为了解决这些问题，在成功完成MKD后命令，服务器应该返回一行表单：257&lt;space&gt;"&lt;directory-name&gt;"&lt;space&gt;&lt;commentary&gt;也就是说，服务器将告诉用户使用什么字符串，当引用创建的目录。目录名称可以包含任何字符；嵌入式双引号应通过双引号（“引号加倍”惯例）。例如，用户连接到目录/usr/dm，并创建一个名为路径名的子目录：CWD /usr/dm200目录更改为/usr/dmMKD路径名创建了257“/usr/dm/pathname”目录带有嵌入式双引号的示例：MKD foo"bar创建了257“/usr/dm/foo”bar目录CWD /usr/dm/foo"bar200个目录更改为/usr/dm/foo"barCWD命令。不幸的是，对MKD的论点可能并不总是CWD的合适论点。就是这种情况，例如，当TOPS-20子目录是通过仅提供子目录创建的名字。也就是说，使用TOPS-20服务器FTP，命令序列MKD MYDIRCWD MYDIR会失败的。新目录只能由其引用“绝对”名称；例如，如果上述MKD命令是在连接到目录&lt;DFRANKLIN&gt;，新的子目录只能用&lt;DFRANKLIN.MYDIR&gt;这个名字来称呼。然而，即使在UNIX和Multics上，给MKD的论点也可能不合适。如果它是一个“相对”路径名（即路径名相对于当前目录进行解释），用户需要在同一个当前目录中才能到达子目录。根据应用程序的不同，这可能是不方便。无论如何，它都不是很坚固。为了解决这些问题，在成功完成MKD后命令，服务器应该返回一行表单：257&lt;space&gt;"&lt;directory-name&gt;"&lt;space&gt;&lt;commentary&gt;也就是说，服务器将告诉用户使用什么字符串，当引用创建的目录。目录名称可以包含任何字符；嵌入式双引号应通过双引号（“引号加倍”惯例）。例如，用户连接到目录/usr/dm，并创建一个名为路径名的子目录：CWD /usr/dm200目录更改为/usr/dmMKD路径名创建了257“/usr/dm/pathname”目录带有嵌入式双引号的示例：MKD foo"bar创建了257“/usr/dm/foo”bar目录CWD /usr/dm/foo"bar200个目录更改为/usr/dm/foo"bar<span class="grey">Postel &amp; Reynolds [第63页]</span></pre>
        <hr class="noprint"><!--NewPage-->
        <pre
            class="newpage"><span id="page-64"></span>
    <span class="grey"><a href="/doc/html/rfc959">RFC 959 </a>1985年10月</span>文件传输协议文件传输协议具有相同名称的子目录的先前存在是一个错误，服务器必须返回“访问被拒绝”错误回复在那种情况下。CWD /usr/dm200目录更改为/usr/dmMKD路径名521-"/usr/dm/pathname"目录已经存在；521没有采取任何行动。MKD的失败回复类似于其文件创建表弟，STOR。此外，如果文件，则会给出“访问被拒绝”返回与子目录名称相同的名称将与创建子目录（这是UNIX上的一个问题，但是不应该在TOPS-20上成为一个）。本质上是因为PWD命令返回相同类型的信息作为成功的MKD命令，成功的PWD命令也使用257回复代码。微妙之处因为这些命令在传输时最有用从一台机器到另一台机器的子树，仔细观察MKD的参数将被解释为子目录当前工作目录，除非它包含足够的信息让目的地主机不这样做。一个假设的它在TOPS-20世界中的使用示例：CWD &lt;some.where&gt;200 工作目录已更改MKD彩虹257“&lt;some.where.overrainbow&gt;”目录创建CWD 彩虹431 没有这样的目录CWD &lt;some.where.overrainbow&gt;200 工作目录已更改CWD &lt;some.where&gt;200 工作目录更改为&lt;some.where&gt;MKD &lt;明确&gt;创建了257“&lt;不明确&gt;”目录CWD &lt;不含糊&gt;请注意，第一个示例导致子目录连接的目录。相比之下，第二个论点示例包含足够的信息，供TOPS-20告诉具有相同名称的子目录的先前存在是一个错误，服务器必须返回“访问被拒绝”错误回复在那种情况下。CWD /usr/dm200目录更改为/usr/dmMKD路径名521-"/usr/dm/pathname"目录已经存在；521没有采取任何行动。MKD的失败回复类似于其文件创建表弟，STOR。此外，如果文件，则会给出“访问被拒绝”返回与子目录名称相同的名称将与创建子目录（这是UNIX上的一个问题，但是不应该在TOPS-20上成为一个）。本质上是因为PWD命令返回相同类型的信息作为成功的MKD命令，成功的PWD命令也使用257回复代码。微妙之处因为这些命令在传输时最有用从一台机器到另一台机器的子树，仔细观察MKD的参数将被解释为子目录当前工作目录，除非它包含足够的信息让目的地主机不这样做。一个假设的它在TOPS-20世界中的使用示例：CWD &lt;some.where&gt;200 工作目录已更改MKD彩虹257“&lt;some.where.overrainbow&gt;”目录创建CWD 彩虹431 没有这样的目录CWD &lt;some.where.overrainbow&gt;200 工作目录已更改CWD &lt;some.where&gt;200 工作目录更改为&lt;some.where&gt;MKD &lt;明确&gt;创建了257“&lt;不明确&gt;”目录CWD &lt;不含糊&gt;请注意，第一个示例导致子目录连接的目录。相比之下，第二个论点示例包含足够的信息，供TOPS-20告诉<span class="grey">Postel &amp; Reynolds [第64页]</span></pre>
        <hr class="noprint"><!--NewPage-->
        <pre
            class="newpage"><span id="page-65"></span>
    <span class="grey"><a href="/doc/html/rfc959">RFC 959 </a>1985年10月</span>文件传输协议文件传输协议&lt;unambiguous&gt;目录是一个顶级目录。还要注意在第一个示例中，用户“侵犯”了协议尝试访问带有名称的新创建的目录除了TOPS-20退回的那个。问题可能有导致本案存在&lt;overrainbow&gt;目录；这是一些TOPS-20实现中固有的模糊性。类似的考虑也适用于RMD命令。重点是这：除非这样做会违反主持人的惯例表示相对路径名和绝对路径名，主机应该处理MKD和RMD命令的操作数作为子目录。这个257对MKD命令的回复必须始终包含绝对创建目录的路径名。&lt;unambiguous&gt;目录是一个顶级目录。还要注意在第一个示例中，用户“侵犯”了协议尝试访问带有名称的新创建的目录除了TOPS-20退回的那个。问题可能有导致本案存在&lt;overrainbow&gt;目录；这是一些TOPS-20实现中固有的模糊性。类似的考虑也适用于RMD命令。重点是这：除非这样做会违反主持人的惯例表示相对路径名和绝对路径名，主机应该处理MKD和RMD命令的操作数作为子目录。这个257对MKD命令的回复必须始终包含绝对创建目录的路径名。<span class="grey">Postel &amp; Reynolds [第65页]</span></pre>
        <hr class="noprint"><!--NewPage-->
        <pre
            class="newpage"><span id="page-66"></span>
    <span class="grey"><a href="/doc/html/rfc959">RFC 959 </a>1985年10月</span>文件传输协议附录三-FTP上的RFCBhushan，Abhay，“文件传输协议”，<a href="/doc/html/rfc114">RFC 114</a>（NIC 5823），麻省理工学院-MAC项目，1971年4月16日。Harslem，Eric和John Heafner，“对<a href="/doc/html/rfc114">RFC 114</a>的评论（文件传输协议）”，<a href="/doc/html/rfc141">RFC 141</a>（NIC 6726），兰德，1971年4月29日。Bhushan，Abhay等人，《文件传输协议》，<a href="/doc/html/rfc172">RFC 172</a>（NIC 6794），麻省理工学院-MAC项目，1971年6月23日。Braden，Bob，“关于DTP和FTP提案的评论”，<a href="/doc/html/rfc238">RFC 238</a>（NIC 7663），加州大学洛杉矶分校/CCN，1971年9月29日。Bhushan，Abhay等人，《文件传输协议》，<a href="/doc/html/rfc265">RFC 265</a>（NIC 7813），麻省理工学院-MAC项目，1971年11月17日。（NIC 7813），麻省理工学院-MAC项目，1971年11月17日。McKenzie，Alex，“建议添加文件传输协议”，McKenzie，Alex，“建议添加文件传输协议”，<a href="/doc/html/rfc281">RFC 281</a>RFC 281（NIC 8163），BBN，1971年12月8日。Bhushan，Abhay，“在文件中使用“设置数据类型”事务传输协议”，RFC 294（NIC 8304），MIT-Project MAC，1972年1月25日。Bhushan，Abhay，“文件传输协议”，RFC 354（NIC 10596），麻省理工学院-项目MAC，1972年7月8日。Bhushan，Abhay，“关于文件传输协议（RFC 354）的评论”，（NIC 8163），BBN，1971年12月8日。Bhushan，Abhay，“在文件中使用“设置数据类型”事务传输协议”，<a href="/doc/html/rfc294">RFC 294</a>（NIC 8304），MIT-Project MAC，1972年1月25日。Bhushan，Abhay，“文件传输协议”，<a href="/doc/html/rfc354">RFC 354</a>（NIC 10596），麻省理工学院-项目MAC，1972年7月8日。Bhushan，Abhay，“关于文件传输协议（<a href="/doc/html/rfc354">RFC 354）</a>的评论”，<a href="/doc/html/rfc385">RFC 385</a>（NIC 11357），麻省理工学院-项目MAC，1972年8月18日。希克斯，格雷格，“用户FTP文档”，<a href="/doc/html/rfc412">RFC 412</a>（NIC 12404），犹他州，1972年11月27日。Bhushan，Abhay，“文件传输协议（FTP）状态和进一步评论”，<a href="/doc/html/rfc414">RFC 414</a>（NIC 12406），麻省理工学院MAC项目，1972年11月20日。Braden，Bob，“关于文件传输协议的评论”，<a href="/doc/html/rfc430">RFC 430</a>（NIC 13299），UCLA/CCN，1973年2月7日。（NIC 13299），UCLA/CCN，1973年2月7日。Thomas、Bob和Bob Clements，“FTP服务器-服务器交互”，Thomas、Bob和Bob Clements，“FTP服务器-服务器交互”，<a href="/doc/html/rfc438">RFC 438</a>RFC 438（NIC 13770），BBN，1973年1月15日。Braden，Bob，“在FTP中打印文件”，RFC 448（NIC 13299），UCLA/CCN，1973年2月27日。McKenzie，Alex，“文件传输协议”，RFC 454（NIC 14333），BBN，1973年2月16日。（NIC 13770），BBN，1973年1月15日。Braden，Bob，“在FTP中打印文件”，<a href="/doc/html/rfc448">RFC 448</a>（NIC 13299），UCLA/CCN，1973年2月27日。McKenzie，Alex，“文件传输协议”，<a href="/doc/html/rfc454">RFC 454</a>（NIC 14333），BBN，1973年2月16日。<span class="grey">Postel &amp; Reynolds [第66页]</span></pre>
        <hr class="noprint"><!--NewPage-->
        <pre
            class="newpage"><span id="page-67"></span>
    <span class="grey"><a href="/doc/html/rfc959">RFC 959 </a>1985年10月</span>文件传输协议Bressler、Bob和Bob Thomas，“通过FTP进行邮件检索”，<a href="/doc/html/rfc458">RFC 458</a>（NIC 14378），BBN-NET和BBN-TENEX，1973年2月20日。Neigus，Nancy，“文件传输协议”，<a href="/doc/html/rfc542">RFC 542</a>（NIC 17759），BBN，1973年7月12日。Krilanovich、Mark和George Gregg，“关于文件传输的评论协议”，<a href="/doc/html/rfc607">RFC 607</a>（NIC 21255），UCSB，1974年1月7日。Pogran、Ken和Nancy Neigus，“对<a href="/doc/html/rfc607">RFC 607</a>的回应-评论文件传输协议”，<a href="/doc/html/rfc614">RFC 614</a>（NIC 21530），BBN，1974年1月28日。Krilanovich、Mark、George Gregg、Wayne Hathaway和Jim White，“关于文件传输协议的评论”，<a href="/doc/html/rfc624">RFC 624</a>（NIC 22054），UCSB，艾姆斯研究中心，SRI-ARC，1974年2月28日。Bhushan，Abhay，“FTP评论和对<a href="/doc/html/rfc430">RFC 430</a>的回应”，<a href="/doc/html/rfc463">RFC 463</a>（NIC 14573），MIT-DMCG，1973年2月21日。（NIC 14573），MIT-DMCG，1973年2月21日。Braden，Bob，“FTP数据压缩”，RFC 468（NIC 14742），UCLA/CCN，1973年3月8日。Bhushan，Abhay，“FTP和网络邮件系统”，RFC 475（NIC 14919），MIT-DMCG，1973年3月6日。布雷斯勒、鲍勃和鲍勃·托马斯“FTP服务器-服务器交互-II”，Braden，Bob，“FTP数据压缩”，<a href="/doc/html/rfc468">RFC 468</a>（NIC 14742），UCLA/CCN，1973年3月8日。Bhushan，Abhay，“FTP和网络邮件系统”，<a href="/doc/html/rfc475">RFC 475</a>（NIC 14919），MIT-DMCG，1973年3月6日。布雷斯勒、鲍勃和鲍勃·托马斯“FTP服务器-服务器交互-II”，<a href="/doc/html/rfc478">RFC 478</a>（NIC 14947），BBN-NET和BBN-TENEX，1973年3月26日。White，Jim，“NIC Journal使用FTP”，<a href="/doc/html/rfc479">RFC 479</a>（NIC 14948），SRI-ARC，1973年3月8日。White，Jim，“与主机依赖的FTP参数”，<a href="/doc/html/rfc480">RFC 480</a>（NIC 14949），SRI-ARC，1973年3月8日。Padlipsky，Mike，“FTP命令命名问题”，<a href="/doc/html/rfc506">RFC 506</a>（NIC 16157），MIT-Multics，1973年6月26日。（NIC 16157），MIT-Multics，1973年6月26日。Day，John，“FTP组备忘录（文件访问协议提案）”，Day，John，“FTP组备忘录（文件访问协议提案）”，<a href="/doc/html/rfc520">RFC 520</a>（NIC 16819），伊利诺伊州，1973年6月25日。Merryman，Robert，“UCSD-CC服务器-FTP设施”，<a href="/doc/html/rfc532">RFC 532</a>（NIC 17451），UCSD-CC，1973年6月22日。（NIC 17451），UCSD-CC，1973年6月22日。Braden，Bob，“TENEX FTP问题”，RFC 571（NIC 18974），UCLA/CCN，1973年11月15日。Braden，Bob，“TENEX FTP问题”，<a href="/doc/html/rfc571">RFC 571</a>（NIC 18974），UCLA/CCN，1973年11月15日。<span class="grey">Postel &amp; Reynolds [第67页]</span></pre>
        <hr class="noprint"><!--NewPage-->
        <pre
            class="newpage"><span id="page-68"></span>
    <span class="grey"><a href="/doc/html/rfc959">RFC 959 </a>1985年10月</span>文件传输协议文件传输协议McKenzie、Alex和Jon Postel，“Telnet和FTP实施-时间表更改”，RFC 593（NIC 20615），BBN和MITRE，1973年11月29日。Sussman，Julie，“FTP错误代码使用更可靠的邮件服务”，RFC 630（NIC 30237），BBN，1974年4月10日。Postel，Jon，“修订的FTP回复代码”，RFC 640（NIC 30843），加州大学洛杉矶分校/NMC，1974年6月5日。哈维，布莱恩，《独自离开足够好》，RFC 686（NIC 32481），SU-AI，1975年5月10日。Harvey，Brian，“One More Try on the FTP”，RFC 691（NIC 32700），SU-AI，1975年5月28日。Lieb，J.，“CWD FTP指挥部”，RFC 697（NIC 32963），1975年7月14日。Harrenstien，Ken，“FTP扩展：XSEN”，RFC 737（NIC 42217），SRI-KL，1977年10月31日。Harrenstien，Ken，“FTP扩展：XRSQ/XRCP”，RFC 743（NIC 42758），SRI-KL，1977年12月30日。Lebling，P。David，“FTP邮件和MLFL调查”，RFC 751，麻省理工学院，1978年12月10日。Postel，Jon，“文件传输协议规范”，RFC 765，ISI，1980年6月。Mankins、David、Dan Franklin和Buzz Owen，“面向目录的FTP命令”，RFC 776，BBN，1980年12月。Padlipsky，Michael，“FTP唯一命名存储命令”，RFC 949，MITRE，1985年7月。McKenzie、Alex和Jon Postel，“Telnet和FTP实施-时间表更改”，<a href="/doc/html/rfc593">RFC 593</a>（NIC 20615），BBN和MITRE，1973年11月29日。Sussman，Julie，“FTP错误代码使用更可靠的邮件服务”，<a href="/doc/html/rfc630">RFC 630</a>（NIC 30237），BBN，1974年4月10日。Postel，Jon，“修订的FTP回复代码”，<a href="/doc/html/rfc640">RFC 640</a>（NIC 30843），加州大学洛杉矶分校/NMC，1974年6月5日。哈维，布莱恩，《独自离开足够好》，<a href="/doc/html/rfc686">RFC 686</a>（NIC 32481），SU-AI，1975年5月10日。Harvey，Brian，“One More Try on the FTP”，<a href="/doc/html/rfc691">RFC 691</a>（NIC 32700），SU-AI，1975年5月28日。Lieb，J.，“CWD FTP指挥部”，<a href="/doc/html/rfc697">RFC 697</a>（NIC 32963），1975年7月14日。Harrenstien，Ken，“FTP扩展：XSEN”，<a href="/doc/html/rfc737">RFC 737</a>（NIC 42217），SRI-KL，1977年10月31日。Harrenstien，Ken，“FTP扩展：XRSQ/XRCP”，<a href="/doc/html/rfc743">RFC 743</a>（NIC 42758），SRI-KL，1977年12月30日。Lebling，P。David，“FTP邮件和MLFL调查”，<a href="/doc/html/rfc751">RFC 751</a>，麻省理工学院，1978年12月10日。Postel，Jon，“文件传输协议规范”，<a href="/doc/html/rfc765">RFC 765</a>，ISI，1980年6月。Mankins、David、Dan Franklin和Buzz Owen，“面向目录的FTP命令”，<a href="/doc/html/rfc776">RFC 776</a>，BBN，1980年12月。Padlipsky，Michael，“FTP唯一命名存储命令”，<a href="/doc/html/rfc949">RFC 949</a>，MITRE，1985年7月。<span class="grey">Postel &amp; Reynolds [第68页]</span></pre>
        <hr class="noprint"><!--NewPage-->
        <pre
            class="newpage"><span id="page-69"></span>
    <span class="grey"><a href="/doc/html/rfc959">RFC 959 </a>1985年10月</span>文件传输协议参考文献[1] Feinler，Elizabeth，“互联网协议过渡工作簿”，网络信息中心，SRI国际，1982年3月。[2] Postel，Jon，“传输控制协议-DARPA互联网程序协议规范”，<a href="/doc/html/rfc793">RFC 793</a>，DARPA，1981年9月。[3] Postel，Jon和Joyce Reynolds，“Telnet协议规格”，<a href="/doc/html/rfc854">RFC 854</a>，ISI，1983年5月。[4] Reynolds，Joyce和Jon Postel，“分配号码”，<a href="/doc/html/rfc943">RFC 943</a>，ISI，1985年4月。Postel &amp; Reynolds [第69页]</pre>
    </div>
</body>

</html>